次に始まる数千行のファイルがあります。
>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
>
行の先頭を維持する必要がある場合は、最初の一致のみが削除されます。