0

以下のようなファイル(サンプルファイル)があります。

10、ボブ、エレク、ボブ、ヒーロー、、

20、ボブ、メック、スティーブ、ジュニ、、、ユム

30、Bob、instr、Bob、sen

40、Bob、comps、alex、juni、syu 、、

50、ボブ、ケム、ボブ、ボブ、セニ

文字列Bobが各行に複数回表示されているすべての行が必要になります

また、上記のように区切られたファイルではなく、以下のようなファイルの場合、特定の文字列が繰り返されている行をどのように取得しますか(この場合はBob

10、ボブ、elecBob、ヒーロー、、

20、Bob、mech、steve、juni ||| Bob、yummBob

30、BobExtarvagnaxz |||

私はいくつかのオプションを試しましたが、正確に必要なものになりませんでした。

ありがとうチェサン

4

4 に答える 4

1

出力の20で始まる行は、入力の20と同じではありません。そして、なぜ入力の30,50が出力にないのですか?彼らは複数の「ボブ」を持っています。

とにかく、この速くて汚い線があなたのために働くかどうか試してみてください。

 awk '/.*(Bob).*(Bob).*/' yourFile
于 2011-10-13T12:56:23.587 に答える
1

正規表現を使用できます。

カンマ区切りのファイルがある場合は、次のコマンドを使用して、1つのボブを検索し、次に別のボブを検索できます。

grep -E "(^|,)Bob,.*Bob(,|$)" file.txt

ファイルが区切られていない場合は、次のようなより一般的な正規表現を使用できます。

grep -E "^.*Bob.*Bob.*$" file.txt

Bob,steve,Bobbyしかし、ボブとボビーを区別する方法がわからないため、のような行がある場合、これは正しく機能しない可能性があります。

于 2011-10-13T13:01:10.040 に答える
1

これにより、複数のボブがない行が削除されます。

sed '/Bob.*Bob/!d' filename
于 2011-10-13T13:35:39.830 に答える
1

以下は、同じ行に3文字以上の文字列が繰り返されているすべての行を印刷します(一致する文字列を長くする必要がある場合は、括弧内にドットを追加するだけです)。

 $ grep '\(....*\).*\1' testdat

次の入力ファイルが与えられます:

 hahaAliAlihehe
 Ali ist allein
 Ali, Alibaba, Alimente
 Bert, Bertha, Bertram
 Holger, V'ger, Ludger
 Susi,Bernd,Holger

印刷します:

 hahaAliAlihehe
 Ali, Alibaba, Alimente
 Bert, Bertha, Bertram
 Holger, V'ger, Ludger
于 2011-10-13T14:05:58.800 に答える