与えたい文字のセットに合わないすべての文字をどうやってgrepできるのだろうと思っていました。
たとえば、次のテキストを含むファイルがあるとします
XXXXX0000000HelloXXXXXX
MyXXXName0000Is00000000
XXXXXJamesXXX0X0X0X0XXX
「HelloMyNameIsJames」またはそれらの文字を他の方法で印刷したい(1行に1文字で表示される場合は、それで問題ありません)。
どんな助けでも大歓迎です!Raymosrunerx
tr -d X0 < input
出力:
Hello
MyNameIs
James
行末も削除するには:
tr -d 'X0\n' < input
Ouput
HelloMyNameIsJames
(末尾の行の終わりはありません)
grep
(grep
サポートしている場合)を使用して、1行に1文字の別のソリューション-o
:
grep -o '[^X0]'
行がファイル testdata に含まれている場合、次のコマンドは次のように各行を出力します。
sed -e 's/[0X]//g' testdata | xargs
Hello MyNameIs James
これがあなたのニーズを満たすことを願っています!
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
試す:
sed -e 's/[X0]//g' input
grep
あなたのために何かを削除するつもりはありません。