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