www.
次に始まらず、次を含まない文字列を抽出するための次のコマンドがあります/
。
grep -v -e '^www\.' -e '/' test2.txt
somestring.somestring
ただし、次のコマンドを使用して達成できる一致パターンに加えて、上記の内容が必要です。
grep -e '^[^\.]*\.[^\.]*$'
すべての書類を1行に入れる方法は?
ベストアンサー1
grep
1 回の呼び出しで逆方向一致と順方向一致を組み合わせることはできません。
あなたはこれを行うことができますsed
:
sed -e '/^www\./d' -e '/\//d' -e '/^[^.]*\.[^.]*$/!d' ./*.txt
またはawk
(sed
一致するファイルの名前を印刷できるのとは反対grep
):
awk -F. 'NF == 2 && !/^www\./ && !/\// {print FILENAME": "$0}' ./*.txt
ファイル名を印刷したくない場合は、2つのgrep呼び出しを使用してこれを実行できます。
cat ./*.txt | grep '^[^.]*\.[^.]*$' | grep -v -e / -e '^www\.'
cat
これは、標準入力としてすべてのファイルの内容を提供するために使用されるため、最初のファイルはgrep
ファイル名を印刷しません。一部の実装では、複数のファイルがある場合はgrep
ファイル名の印刷をスキップする必要があります。grep -h
ファイル名が1つしかない場合、grep
ファイル名は印刷されず、リダイレクトを介して標準入力に供給できます。
<onefile.txt grep '^[^.]*\.[^.]*$' | grep -v -e / -e '^www\.'
これをサポートする場合は、PCREの(?!...)
否定予測演算子を使用して否定を達成できます。grep
-P
grep '^(?!www\.)(?!.*/)[^.]*\.[^.]*$' ./*.txt
ただし、ここでは次のようにすべての操作を実行できます-v
。
grep -v -e / -e '^www\.' -e '^[^.]*$' -e '\..*\.'
また、ポイントのない行と複数のポイントを含む行も除外されます。