空ではなく、で始まらない行を選択する必要があります//
。次のように2つの個別のgrepコマンドを実行できます。
空行ではなく行を抽出するには:
grep -v -E '^$' test.txt
次に始まらない行を抽出するには、次のようにします//
。
grep -v '//' test.txt
これら2つのコマンドを1つにまとめるにはどうすればよいですか?
答え1
この試み、
grep -ve '^$' -e '^//' file
男性の場合:
-e モード、 --regexp=モード
Use PATTERN as the pattern. This can be used to specify multiple search patterns,
または、拡張正規表現(-E)を使用します。
grep -v -E '^($|//)' file
男性の場合:
2 つの正規表現は中位演算子 | で連結できます。結果の正規表現は、2つの代替式に一致するすべての文字列に一致します。
答え2
ステートメントがマージされました(エラーは後述)。
grep -v -E '^$' | grep -v '//' test.txt
左から最初の部分(まで|
)にのみ空白行が含まれていません。最初のエラーは、最も右側のステートメントが提供されることですtest.txt
。両方のコマンドがこの入力に対して機能するには、一番左のステートメントに指定する必要があります。私の言葉は:
grep -v -E '^$' test.txt | grep -v '//'
2番目のエラーは、'//'
定義が実際に行の始まりを示す'^//'
位置にあるはずです。^
すべてを一度に:
grep -v -E '^$' test.txt | grep -v '^//'
これらのチェーンの使用はgrep
一般的な慣行です。これを1つのプロセスにまとめる方法のgrep
詳細については、他の回答を参照してください。
答え3
したがって、次から始まる行が必要です//
。
grep -E '^([^/]|.[^/])' file