sedを使用して、空白行からタブを削除したいと思います。たとえば、\t\n
のみを含む行は\n
に変更する必要があります。 これの構文は何ですか?
sed
は、\t
のようなエスケープシーケンスについて知りません。したがって、コンソールで文字通りtab
と入力する必要があります。
sed 's/^ *$//g' <filename>
Bashを使用している場合、コンソールでtab
と入力することはできません。 ^V
を実行してから、tab
を押す必要があります。 (Ctrl-V
そしてtab
)リテラルタブを印刷します。
任意の空白行を空の行に置き換えるには、
sed -r 's/^\s+$//'
-rフラグは、拡張正規表現を使用することを示し、^\s + $パターンは、空白を含むすべての行に一致しますが、他の文字は一致しません。
他の投稿されたソリューションは、行に1つ(そして1つだけ)のタブがある場合に機能します。 Raze2dustは、sedではリテラルタブを入力する必要があると指摘していることに注意してください。別の方法は次のとおりです。
sed '/[^ ]/!s/ //g' file-name.txt
タブしかない行からタブを置き換えるもの。反転されたクラスは、タブのバグを含む行に一致します-次の「!」これらの行と一致しなくなります。つまり、タブのみを持つ行のみを意味します。その後、置換はそれらの行でのみ実行され、すべてのタブが削除されます。
\ tがUNIXで認識されないことに気づきました。そうは言っても、実際のキーを使用してください。以下のコードでは、TABはタブキーを押すことを表します。
$ sed's/TAB // g'oldfile> newfile
わかりやすいヒント:タブを削除しようとしているファイルにタブがあることを確認するには、次のコードを使用して\ tが表示されるかどうかを確認します
$ od-cファイル名