ファイルから空の行をすべて削除したい。行にスペースまたはタブが含まれている場合でも、削除する必要があります。
ファイルから空の行をすべて削除したい。行にスペースまたはタブが含まれている場合でも、削除する必要があります。
回答:
ただ、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:]]
、空白以外の任意の文字を意味します。
[^[:blank:]]$
空白以外で終わる行にのみ一致します。私たちは、非空白含む行たいどこでも
grep -E '\S'
動作しない場合はありますか?
どうですか:
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をご覧ください。
[[:space:]]
タブが含まれます。そうでなければ、タブの後にスペースが続くと正規表現は失敗します。
wctype(3)
isalpha(3)
sed
コマンドを使用して空白行を削除できます。
sed '/^$/d' in > out
このコマンドは、ファイル「in」からすべての空行を削除します
次のコマンドを使用します。
grep '\S' FILE
スペースやタブを含むすべての行が削除されます。
それ以外の場合、スペース/タブのある行を含まない削除は、次を使用します:
grep . FILE
例えば:
$ printf "line1\n\nline2\n \nline3\n" > FILE
$ cat -v FILE
line1
line2
line3
$ grep '\S' FILE
line1
line2
line3
$ grep . FILE
line1
line2
line3
こちらもご覧ください:
sed
:sedを使用して空の行を削除しますawk
:awkを使用して空白行を削除します
$
行末も必要ですか?