空の行ではなく、//
で始まらない行を選択する必要があります。次のように、2つの別々のgrepコマンドを実行できます。
空の行ではない行を抽出するには:
grep -v -E '^$' test.txt
//
で始まらない行を抽出するには:
grep -v '//' test.txt
両方のコマンドを1つに組み合わせるにはどうすればよいですか?
これを試して、
grep -ve '^$' -e '^//' file
男から:
-e PATTERN、-regexp = PATTERN
Use PATTERN as the pattern. This can be used to specify multiple search patterns,
または拡張正規表現(-E)を使用する:
grep -v -E '^($|//)' file
男から:
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
プロセスにマージする方法については、他の回答を参照してください。
したがって、//
以外の文字で始まる行が必要です。
grep -E '^([^/]|.[^/])' file