
テキストファイルのこの行が欲しい
This is to become line 1 and that is line 2
次のように 2 行に分割します。
This is to become line 1
and that is line 2
何かを編集/切り取り/削除したいわけではなく、1 文字も削除したいわけではないことに注意してください。テキストを 1 行ではなく 2 行にして、どこで分割するかを決定できるようにしたいだけです。これを行うにはsed
、 またはawk
または をsplit
どのように使用すればよいですか? どれを使用するかは特に気にしませんが、可能であればsed
を使用します...
答え1
「and」という単語で行を分割しようとしている場合は、これが機能します。
echo "This is to become line 1 and that is line 2" | sed 's/and/\nand/g'
This is to become line 1
and that is line 2
使用している sed のバージョンによって、結果が異なる場合がありますのでご注意ください。
アップデート:
分割するには、2 行目の先頭として使用したい用語/要素の前に「\n」を追加するだけです。
echo "Sun rise: <...strong...>07:24 am<../..strong..><..br ../..> Sun set: <..strong..>07:31 pm<../..strong..><..br.. /..> " | sed 's/Sun set/\nSun set/'
Sun rise: <...strong...>07:24 am<../..strong..><..br ../..>
Sun set: <..strong..>07:31 pm<../..strong..><..br.. /..>
答え2
を使用した個人的な実装を追加しましたawk
。必要に応じて を変更できますseparator
。
echo "line 1 and line 2" | awk -v separator="and" 'BEGIN {FS=separator} $0 ~ separator {printf "%s\n%s%s", $1,FS,$2}'
awk
私は変数を簡単に使用できる可能性から、常に を使用することを好みます。他の要素に基づいて行を分割したい場合は、セパレータ、値を別の値に変更するだけですseparator
。
2行目から切り取りたい場合separator
(つまり、「そして2行目"、 だけ "2行目"):
echo "line 1 and line 2" | awk -v separator="and " 'BEGIN {FS=separator} $0 ~ separator {printf "%s\n%s", $1,$2}'