Linuxでgrep -v '^$'
を試しましたが、うまくいきませんでした。このファイルはWindowsファイルシステムから取得されました。
以下を試してください:
grep -v -e '^$' foo.txt
-e
オプションを使用すると、照合用の正規表現パターンが許可されます。
^$
を単一引用符で囲むと、Cshellで機能します。他のシェルは、一重引用符または二重引用符で満足します。
更新:これは、空白行または「すべての空白」(「\ r\n」スタイルの行末を持つWindows行など)のファイルに対して機能しますが、上記は空白行とUNIXスタイルの行末を持つファイルのみを削除します。
grep -v -e '^[[:space:]]*$' foo.txt
複雑にしないでおく。
grep . filename.txt
$ dos2unix file
$ grep -v "^$" file
または単にawk
awk 'NF' file
Dos2unixがない場合は、trのようなツールを使用できます
tr -d '\r' < "$file" > t ; mv t "$file"
grep -v "^[[:space:]]*$"
The -v makes it print lines that do not completely match
===Each part explained===
^ match start of line
[[:space:]] match whitespace- spaces, tabs, carriage returns, etc.
* previous match (whitespace) may exist from 0 to infinite times
$ match end of line
コードの実行
$ echo "
> hello
>
> ok" |
> grep -v "^[[:space:]]*$"
hello
ok
これがどのように/なぜ機能するかについてさらに理解するために、正規表現を読むことをお勧めします。 http://www.regular-expressions.info/tutorial.html
この例で空白行を削除できます:
grep . filename.txt
行に複数の空白行のシーケンスがあり、シーケンスごとに1つの空白行のみが必要な場合は、試してください
grep -v "unwantedThing" foo.txt | cat -s
cat -s
は、空の出力行の繰り返しを抑制します。
あなたの出力は
match1
match2
に
match1
match2
元の出力の3つの空白行は、1つの空白行に圧縮または「圧縮」されます。
egrep
を使用することをお勧めしますが、空白行を含む本物のファイルを使用したテストでは、アプローチは正常に機能しました(ただし、テストでは引用符はありません)。これも機能しました:
egrep -v "^(\r?\n)?$" filename.txt
上記の回答と同じ
grep -v -e '^$' foo.txt
ここで、grep -eはgrepの拡張バージョンを意味します。 '^ $'は、^(行の始まり)と$(行の終わり)の間に文字がないことを意味します。 「^」および「$」は正規表現文字です。
したがって、コマンドgrep -vは、このパターンに一致しないすべての行を出力します(^と$の間に文字はありません)。
これにより、空の空白行が削除されます
一生懸命試してみましたが、これはうまくいくようです(\r
がここで噛んでいると仮定します)
printf "\r" | egrep -xv "[[:space:]]*"
白い線と#記号で始まる行を削除する別の方法を次に示します。これは設定ファイルを読むのにとても便利だと思います。
[root@localhost ~]# cat /etc/sudoers | egrep -v '^(#|$)'
Defaults requiretty
Defaults !visiblepw
Defaults always_set_home
Defaults env_reset
Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR
LS_COLORS"
root ALL=(ALL) ALL
%wheel ALL=(ALL) ALL
stack ALL=(ALL) NOPASSWD: ALL
Perlの使用:
Perl -ne 'print if /\S/'
\S
は、空白以外の文字に一致することを意味します。
grepパターンfilename.txt |ユニック
egrep -v "^\s\s +"
egrepはすでに正規表現を実行し、\ sは空白です。
+は現在のパターンを複製します。
^は開始のためのものです
awk 'NF' file-with-blank-lines > file-with-no-blank-lines