FILE
:
hello
world
foo
bar
このFILE
の空の新しい行をすべて削除するときはどうすればよいですか?
コマンドの出力:
FILE
:
hello
world
foo
bar
grep . FILE
(そして、もしあなたが本当にsedでそれをしたいなら、sed -e /^$/d FILE
)
(そして、あなたが本当にawkでそれをしたいのなら:awk /./ FILE
)
以下を試してください:
grep -v -e '^$'
with awk, just check for number of fields. no need regex
$ more file
hello
world
foo
bar
$ awk 'NF' file
hello
world
foo
bar
空白であるかスペース文字のみを含むすべての行を削除するソリューションは次のとおりです。
grep -v '^[[:space:]]*$' foo.txt
これを試して: sed -i '/^[ \t]*$/d' file-name
Noを持つすべての空白行を削除します。ファイル内の空白(スペースまたはタブ)、つまり(0以上)。
注:角括弧内には「スペース」の後に「\ t」が続きます。
修飾子-i
は、更新された内容をファイルに強制的に書き戻します。このフラグがないと、空の行が画面上で削除されたことがわかりますが、実際のファイルは影響を受けません。
grep '^..' my_file
例
THIS
IS
THE
FILE
EOF_MYFILE
出力として少なくとも2文字の行のみを提供します。
THIS
IS
THE
FILE
EOF_MYFILE
grep '^' my_file
出力の結果も参照してください
THIS
IS
THE
FILE
EOF_MYFILE
grep '^.' my_file
出力も
THIS
IS
THE
FILE
EOF_MYFILE
空行を削除すると、スペースを含む行が意味される場合、次を使用します。
grep '\S' FILE
例えば:
$ printf "line1\n\nline2\n \nline3\n\t\nline4\n" > FILE
$ cat -v FILE
line1
line2
line3
line4
$ grep '\S' FILE
line1
line2
line3
line4
$ grep . FILE
line1
line2
line3
line4
こちらもご覧ください:
Perlは過剰かもしれませんが、同様に機能します。
完全に空白のすべての行を削除します。
Perl -ne 'print if /./' file
完全に空白であるか、空白のみを含むすべての行を削除します。
Perl -ne 'print if ! /^\s*$/' file
オリジナルを編集して.bakファイルを作成するバリエーション:
Perl -i.bak -ne 'print if ! /^\s*$/' file
ex -wayを試してください:
ex -s +'v/\S/d' -cwq test.txt
複数のファイルの場合(インプレース編集):
ex -s +'bufdo!v/\S/d' -cxa *.txt
ファイルを変更せずに(標準出力に印刷するだけ):
cat test.txt | ex -s +'v/\S/d' +%p +q! /dev/stdin