6

ファイルから空の行を削除する必要があります (スペースのみ - null レコードではありません)。

次のコマンドは、null 行に対してのみ機能しますが、スペースの場合は機能しません。

sed '/^$/d' filename

grepを使用して実行できますか?

4

4 に答える 4

14

\s*空白のみを含む空白行に使用します。

 sed '/^\s*$/d' file 

変更をファイルに保存するには、次の-iオプションを使用します。

sed -i '/^\s*$/d' file 

編集:

正規表現^\s*$は、空白のみを含む行にgrep -v一致し、特定のパターンに一致しない行を出力するため、次の例では黒以外の行がすべて出力されます。

 grep -v '^\s*$' file
于 2012-12-20T10:48:41.720 に答える
1
sed -i '/^[ \t]*$/d' file-name

noを持つすべての空白行を削除します。ファイル内の空白(スペースまたはタブ)、つまり(0以上)。

注: 角かっこ内に「スペース」の後に「\t」が続きます...

" -i" は、更新された内容を強制的にファイルに書き戻します... このフラグがないと、画面上で空の行が削除されたことがわかりますが、実際のファイルには影響しません。

于 2014-03-20T09:36:48.870 に答える
1

これを行うPOSIX移植可能な方法は次のとおりです。

sed -i '/^[[:blank:]]*$/d' file

また

grep -v '^[[:blank:]]*$' file
于 2014-03-20T09:51:51.517 に答える
0

sed コマンド (sed '/^$/d' foo ) が正しく実行されていないため、ファイルが Windows マシンからコピーされたことが起こりました。

次のコマンドを実行しましたが、うまくいきました。

$ dos2unix フー

于 2014-03-03T06:40:51.860 に答える