
我想要文字檔的這一行
This is to become line 1 and that is line 2
分成兩行,如下:
This is to become line 1
and that is line 2
請注意,我不想編輯/剪切/刪除任何內容,不是單個字符,我只想最終得到兩行文本而不是一行,並且能夠決定應該在哪裡進行分割。我該如何使用sed
orawk
或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 版本而有所不同。
更新:
為了進行分割,您只需在要用作第二行開頭的術語/元素前面加上“\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
值變更為另一個值。
如果你想從第二行中刪除separator
(我的意思是你不想讀“和2號線“, 但只有 ”2號線”):
echo "line 1 and line 2" | awk -v separator="and " 'BEGIN {FS=separator} $0 ~ separator {printf "%s\n%s", $1,$2}'