3

ファイルを確認するために、何かを起動する必要があります。2つのフィールドでコンマで区切られたテキスト。2番目のフィールドで、/*/*/*必要なデータが見つかる場合があります。捨てたい/*/*だけ

入力ファイル

\\CIFSERVER1\Share1,/fs1_casa/c/share1
\\CIFSERVER1\Share2,/fs2_casa/c/share2
\\CIFSERVER1\Share3,/fs1_casa/c/share3
\\EDULIN\edu,/edu1
\\CIFSERVER2\root,/fs1_casa
\\CIFSERVER2\root,/fs2_casa
\\CIFSERVER2\root,/fs3_casa
\\CIFSERVER2\root,/fs1_casa

出力は次のようになります。

\\CIFSERVER1\Share1,/fs1_casa/c/share1
\\CIFSERVER1\Share2,/fs2_casa/c/share2
\\CIFSERVER1\Share3,/fs1_casa/c/share3

何を削除する必要がありますか?

\\EDULIN\edu,/edu1
\\CIFSERVER2\root,/fs1_casa
\\CIFSERVER2\root,/fs2_casa
\\CIFSERVER2\root,/fs3_casa
\\CIFSERVER2\root,/fs1_casa
4

4 に答える 4

2

カンマの後に3つ以上のスラッシュが必要な場合は、

grep ',/.*/.*/' file
于 2012-09-04T18:25:52.677 に答える
1

/1つの後に3つ以上を含むすべての行を印刷しようとしている場合は、次の,ようにすることができます。

sed -n '\@,.*/.*/.*/@p' input

正確に3を含む行に制限するには/

sed -n '\@,\([^/]*/\)\{3\}[^/]*$@p' input

検索を2番目のフィールドに制限する必要がある場合(たとえば、複数のコンマがある場合があります):

awk '$2 ~ /[/].*[/].*[/]/' FS=, input

また

awk -F, '$2 ~ /\/.*\/.*\//'  input
于 2012-09-04T18:21:32.913 に答える
1

カンマの後にスラッシュが3つ以上あるエントリを保持し、2つ以下の行を削除する場合は、次を使用します。

sed -n '/[^,]*,\/[^/]*\/[^/]*\//p'

通常の-n印刷を抑制します。パターンは、スラッシュに続いて非スラッシュ、別のスラッシュ、さらに非スラッシュ、および別のスラッシュを探して、それを印刷します。3番目のスラッシュの後に文字が必要な場合は、正規表現[^/]の3番目の後に追加します。\/

于 2012-09-04T18:24:07.033 に答える
1

フィールドが2つしかない場合、これはgrepを使用して簡単に実行でき/ます。コンマの後に3文字ある行のみを保持します。

grep ',/.*/.*/'

フィールドが多いほど、grepまたはsedは機能しますが、awkを使用すると簡単になります。

awk -F , '$2 ~ /(\/.*){3}/ {print}'
于 2012-09-04T18:27:51.383 に答える