データセット内の空白行を削除するには

私はデータファイルから空白行を削除するためにsed、awkまたはperlを使って1つのライナーが必要です。ファイル内のデータは次のようになります。

Aamir
Ravi 

Arun


Rampaul
Pankaj

Amit

Bianca

これらの空白は、データファイルのランダムどこにでも表示です。誰かが私のデータセットからこれらの空白行を削除するために1ライナーを提案することができます。

4

6 答え

それは多くの方法で行うことができます。

例えばawk:

awk '$0' yourFile

またはsed:

sed '/^$/d' yourFile

またはgrep:

grep -v '^$' yourFile
6
追加された

Perlソリューション。コマンドラインから。

$ perl -i.bak -n -e'print if /\S/' INPUT_FILE

ファイルをその場で編集し、元のファイルのバックアップを作成します。

4
追加された
ありがとう。私は場所を編集するperl one-linerを探していました。
追加された 著者 anjanb,
.bak を削除すると、バックアップなしでインプレースで編集されます。
追加された 著者 Dave Cross,

AWKソリューション:

ここでは、入力ファイルをループして、フィールドが設定されているかどうかを確認します。 NFはAWKの組み込み変数で、th番目のフィールドに設定されています。行が空の場合、NFは設定されません。この1つのライナーでは、NFが真であるかどうか、すなわち値に設定されているかどうかをテストする。そうであれば、パターンが真であるときにAWKに暗黙のうちに行を出力します。

awk 'NF' INPUT_FILE

SEDソリューション:

この解決法は、答えとして言及したものと同様です。構文が示すように、空白の行は表示されません。

sed -n '/^$/!p' INPUT_FILE
2
追加された

perlではsed、awk、grepよりも簡単です。

$ cat tmp/tmpfile Aamir ラヴィ

アルン

ランパール パンカイ

アミット

ビアンカ

$ perl -i -pe ' s {^ \ s * \ n $} {} ' tmp/tmpfile

$ cat tmp/tmpfile Aamir ラヴィ アルン ランパール パンカイ アミット ビアンカ

2
追加された
ここでは名前はスペース区切り文字で表示されます。シェルでは名前は空白行なしで上下に表示されます。
追加された 著者 Bharatt,

Perlソリューション:

perl -ni.old -e 'print unless /^\s*$/' file

...元のファイルのバックアップコピーとして「.old」という接尾辞が付いたファイルを作成する

1
追加された

できるよ:

 sed -i.bak '/^$/d' file
1
追加された