テキストファイルからこの行が欲しい
This is to become line 1 and that is line 2
次のように2行に分割します。
This is to become line 1
and that is line 2
私は個々の文字ではなく、何も編集/切り取り/削除したくないので、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}'