438

sed を使用して空行を削除しようとしています:

sed '/^$/d'

しかし、私はそれで運がありません。

たとえば、次の行があります。

xxxxxx


yyyyyy


zzzzzz

そして、私はそれが次のようになりたい:

xxxxxx
yyyyyy
zzzzzz

これのコードは何ですか?

4

17 に答える 17

744

「空の」行にスペースまたはタブが含まれている場合があります。POSIX クラスを使用しsedて、空白のみを含むすべての行を削除します。

sed '/^[[:space:]]*$/d'

ERE を使用する短いバージョン (gnu sed など):

sed -r '/^\s*$/d'

(sed はPCRE をサポートしていないことに注意してください。)

于 2013-05-07T08:24:24.303 に答える
77

sed '/^$/d'ファイルをその場で変更することを期待していますか? その場合は、-iフラグを使用する必要があります。

おそらくそれらの行は空ではないので、その場合は、この質問を見てくださいRemove empty lines from txtfiles, remove space from start and end of line私はそれがあなたが達成しようとしているものだと信じています.

于 2013-05-07T08:23:58.207 に答える
73

シード

grep

おかしい

于 2016-08-25T07:37:24.227 に答える
33

これが最も簡単で最速だと思います:

cat file.txt | grep .

すべての空白行も無視する必要がある場合は、これを試してください。

cat file.txt | grep '\S'

例:

s="\
\
a\
 b\
\
Below is TAB:\
    \
Below is space:\
 \
c\
\
"; echo "$s" | grep . | wc -l; echo "$s" | grep '\S' | wc -l

出力

7
5
于 2014-10-17T03:26:56.923 に答える
5

あなたは言うことができます:

sed -n '/ / p' filename    #there is a space between '//'
于 2014-05-27T10:06:14.947 に答える
2

「grep」を使用して、そのようなこともできます。

egrep -v "^$" file.txt
于 2014-08-11T17:20:41.040 に答える