回答:
以下を試してください:
grep -v -e '^$' foo.txt
この-e
オプションを使用すると、正規表現パターンを照合できます。
一重引用符で囲む^$
と、Cshellで機能します。他のシェルは一重引用符または二重引用符で満足します。
更新:これは、空白行または「すべての空白」(「\ r \ n」スタイルの行末を含むWindows行など)を含むファイルに対して私にとって機能しますが、上記は空白行とUNIXスタイルの行末を含むファイルのみを削除します。
grep -v -e '^[[:space:]]*$' foo.txt
grep -E -v
あります。その後-e
はすべてパターンとして解釈されます。
grep -v -e '^[[:space:]]*$' -e '^#' file
スクリプトまたは構成ファイル(またはコメントにハッシュ文字を使用するファイルタイプ)のすべての非空白、非コメント行が表示されます。
単純にする。
grep . filename.txt
使用する:
$ dos2unix file
$ grep -v "^$" file
または単にawk:
awk 'NF' file
dos2unixがない場合は、trなどのツールを使用できます。
tr -d '\r' < "$file" > t ; mv t "$file"
awk
です。
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
連続する複数の空白行のシーケンスがあり、シーケンスごとに1つの空白行だけが必要な場合は、
grep -v "unwantedThing" foo.txt | cat -s
cat -s
空の出力行の繰り返しを抑制します。
あなたの出力は
match1
match2
に
match1
match2
元の出力の3つの空白行は、1つの空白行に圧縮または「圧縮」されます。
前の回答と同じ:
grep -v -e '^$' foo.txt
ここで、grepのgrep -e
拡張バージョンを意味しますます。'^ $'は、^(行の先頭)と$(行の終わり)の間に文字がないことを意味します。「^」と「$」は正規表現文字です。
したがって、コマンド grep -v
はこのパターンに一致しないすべての行を出力します(^と$の間に文字はありません)。
これにより、空の空白行が削除されます。
-e
「grepの拡張バージョン」という意味ではありません-E
。マニュアルでは-e
、パターンが続くことを明示的に述べているだけであることを明確に述べています。パターンはダッシュで始まっておらず、いずれにしても1つのパターンのみを定義しているので、デフォルトではgrepは1つの正規表現パターンを想定しているため、省略しておくこともできますgrep -v '^$' foo.txt
(拡張正規表現機能は不要)。また、これはファイルの空白行を削除するのではなく、出力を介してパイプされる行のみを削除することにも言及する価値があります。その場合、sed -i
適切なツールになります。
egrep -v "^ \ s \ s +"
egrepはすでに正規表現を実行しており、\ sは空白です。
+は現在のパターンを複製します。
^は始めに
使用する:
grep pattern filename.txt | uniq
uniq
隣接する空白行を1行だけに減らしますが、完全には削除しません。それでも、そのように使用するのがuniq
好きです。最初にソートすると、すべての空白行が効果的に削除されます-1つだけ残されますが、行の順序を並べ替えることは受け入れられない場合があります。
白い線と#
記号で始まる線を削除する別の方法を次に示します。これは設定ファイルを読むのにとても便利だと思います。
[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