1

与えたい文字のセットに合わないすべての文字をどうやってgrepできるのだろうと思っていました。

たとえば、次のテキストを含むファイルがあるとします

XXXXX0000000HelloXXXXXX
MyXXXName0000Is00000000
XXXXXJamesXXX0X0X0X0XXX

「HelloMyNameIsJames」またはそれらの文字を他の方法で印刷したい(1行に1文字で表示される場合は、それで問題ありません)。

どんな助けでも大歓迎です!Raymosrunerx

4

5 に答える 5

1
tr -d X0 < input 

出力:

Hello
MyNameIs
James

行末も削除するには:

tr -d 'X0\n' < input 

Ouput

HelloMyNameIsJames

(末尾の行の終わりはありません)

于 2012-10-04T22:08:43.460 に答える
1

grepgrepサポートしている場合)を使用して、1行に1文字の別のソリューション-o

grep -o '[^X0]'
于 2012-10-04T22:10:28.467 に答える
1

行がファイル testdata に含まれている場合、次のコマンドは次のように各行を出力します。

sed -e 's/[0X]//g' testdata | xargs
Hello MyNameIs James

これがあなたのニーズを満たすことを願っています!

于 2012-10-04T22:17:27.423 に答える
1

1 行に 1 単語を使用する場合は、次の 1 つの方法を使用しGNU grepます。

grep -oP '(?<=[0X]|\b)[^0X]+(?=[0X]|\b)' file.txt

結果:

Hello
My
Name
Is
James

sed出力を整理するために使用できます。

< file.txt grep -oP '(?<=[0X]|\b)[^0X]+(?=[0X]|\b)' | sed ':loop; N; $!b loop; s/\n/ /g'

結果:

Hello My Name Is James
于 2012-10-04T22:53:01.047 に答える
0

試す:

sed -e 's/[X0]//g' input

grepあなたのために何かを削除するつもりはありません。

于 2012-10-04T22:09:26.207 に答える