特定の文字の前後の文字列を削除するには?

特定の文字の前後の文字列を削除するには?

次に始まる数千行のファイルがあります。

>Miriam132_38138    Otu32555|1

Miriam*********各行が次に始まるように「」を削除する必要があります。

>Otu32555|1

最初の文字列は常に「Miriam」という単語と7、8、または9文字のセットです。私は星の成功なしに少し遊んだsed

答え1

行から最初の「単語」を削除するには、次のように使用できます。

awk '{print $2}' input.txt

「単語」の間にスペースがあるとします。

答え2

7〜9個の文字セットが空白で終わり、その文字が行Miriamに一度だけ表示されるとします。

sed 's/\(.*\)Miriam.* /\1/' input.txt

この\(.*\)部分は、以前に一致したパターンを「保存」してMiriam再挿入します。\1

答え3

sed '/^Miriam/s/[^ ]* *//' <in >out

...そうです。文字列で始まるすべての行から削除されます。ミリアム空白以外の文字の最初のシーケンスだけがあり、その後に空白文字の最初の文字列が続きます。そうだろういいえすべてのラインに影響を与えますいいえこの文字列で開くといいえその文字列の最初の項目を除いてすべてを削除します。

答え4

使用awk:

awk '{print substr($0, index($0, $2))}' file

最初のフィールドのみが削除され、他のすべてのフィールドは印刷されます。

またはsed:

sed 's/Miriam132_38138 \+//' file

>行の先頭を維持する必要がある場合は、最初の一致のみが削除されます。

関連情報