1行から2種類の文字の間にある複数の文字列を抽出します。

1行から2種類の文字の間にある複数の文字列を抽出します。

1行のテキストで構成されるファイルがあります。 「#」と「@」記号の間の文字列を取得し、「Sequence.txt」に改行文字として保存しようとします。

たとえば、次のような入力ラインがあります。

#HelloMyName@#IsAdam@#NiceToMeetYou@

予想される出力は次のようになります。

HelloMyName
IsAdam
NiceToMeetYou

私はコマンドを試しました:次のコード行:

sed 's/.*#\(.*\)@.*/\1/' >> Sequence.txt

しかし、出力はまさに入力です。

#HelloMyName@#IsAdam@#NiceToMeetYou@

ベストアンサー1

これはsedのgnuバージョンで動作します(デフォルトではすべてのLinuxで)。

echo -n '#HelloMyName@#IsAdam@#NiceToMeetYou@' | sed 's/#\([^@]*\)@/\1\n/g'

私に与える

HelloMyName
IsAdam
NiceToMeetYou

Macで

echo -n '#HelloMyName@#IsAdam@#NiceToMeetYou@' | sed 's/#\([^@]*\)@/\1\'$'\n''/g'

これは echo と同じ作業ファイルの例です。

echo -n '#HelloMyName@#IsAdam@#NiceToMeetYou@'  > input.txt

sed 's/#\([^@]*\)@/\1\n/g' input.txt > sequence.txt

おすすめ記事