
ファイルから空の行をすべて削除したいです。行にスペースやタブが含まれていても削除する必要があります。
答え1
解決策は次のとおりですawk
。
$ awk NF file
の場合は、awk
空NF
でない行にのみ設定してください。この条件が一致する場合、awk
デフォルトのジョブはprint
行全体を印刷することです。
答え2
空白でない場合にのみgrep
機能します。
grep '[^[:blank:]]' < file.in > file.out
[:blank:]
、文字範囲([...]
)ではPOSIX文字クラスと呼ばれます。[:alpha:]
、[:digit:]
...[:blank:]
水平スペース文字のマッチング(POSIXロケールではスペースとタブですが、他のロケールにはUTF8ロケール内のすべてのUnicode水平スペース文字のように多くの場合があります)があり、水平[[:space:]]
および垂直スペース文字と一致します。 ([:blank:]
縦タップ、給紙などと同じ)
grep '[:blank:]'
:
b
、、、、l
またはa
文字を含むn
行が返されますk
。文字クラスは内でのみ認識され、[...]
コレクションは^
内で無効になります。[...]
したがって、[^[:blank:]]
空白文字を除くすべての文字を意味します。
答え3
どうですか?
sed -e 's/^[[:blank:]]*$//' source_file > newfile
または
sed -e '/^[[:blank:]]*$/d' source_file > newfile
つまり
各行について、次を置き換えます。
- 起動すると("
^
") - スペースまたはタブ("
[[:blank:]]
")を0回以上使用する("*
") - その後、行末( "
$
")
::blank:: およびその他の特殊文字の詳細については、次のサイトをご覧ください。http://www.zytrax.com/tech/web/regex.htm#special
答え4
sed
次のコマンドを使用して空白行を削除できます。
sed '/^$/d' in > out
このコマンドは、「in」ファイルの空白行をすべて削除します。