sedを使ってタブ文字のように見えるものを見つけて置き換える方法は?

sedを使ってタブ文字のように見えるものを見つけて置き換える方法は?

次の行があります。

some.com    *.some.com

キーボードの矢印を移動するときに一度だけ動かすと、最後に移動するため、スペースはタブスペースのように見えます(複数のスペースを使用するにはキーボードの矢印を数回移動する必要があるため、複数のスペースがあるようには見えません)。

この空間は私に問題を引き起こします。以下を行う必要があります。

  1. それが何であるかを見てください。

  2. 単一のスペースで置き換えます。

どうすればいいですか?複数のスペースを削除してみましたが、単一の文字を削除できないようです。

編集する:

追加情報です。この行を使用するプログラムは、次のような苦情を表示します。Invalid control character

答え1

タブ文字です。

tr -s '[:blank:]' ' ' <file >newfile

trこれは、ファイルのタブまたはスペースを単一のスペースに置き換えるために使用されます。出力の複数のスペースが単一のスペースに圧縮されます。結果はに記録されますnewfile

単一のタブ文字を単一のスペースに置き換えるには、次のようにします。

tr '\t' ' ' <file >newfile

答え2

少数のコマンドを使用すると、UNIXで特殊文字を表示する

キャラクターが何であるかを確認するには:

less -r sourcefile

または

od -c sourceFile

もっと詳しく見るには。

unix-linux-sed-ascii-制御コード-印刷不可能

sed問題のある制御コードを見つけるには:

sed 's/'`echo "\033"`'/ /g'

どこに\033実際に存在するものに置き換えられます。

答え3

また、これを使用して終了することができます

sed -E "s,[[:space:]]+, ,g" /tmp/test

これは、単一または複数の「スペース」(スペース、タブ)を単一の「スペース」に置き換えます。

$ cat /tmp/test 
sdfsdfsdf    sdfsdfsdfsd
sdflksjdf    sdfélsdkfésldkf    ss

結果

$ sed -E "s,[[:space:]]+, ,g" /tmp/test 
sdfsdfsdf sdfsdfsdfsd
sdflksjdf sdfélsdkfésldkf ss

関連情報