Bash 指令將一行文字拆分為 2 行

Bash 指令將一行文字拆分為 2 行

我想要文字檔的這一行

This is to become line 1 and that is line 2

分成兩行,如下:

This is to become line 1
and that is line 2

請注意,我不想編輯/剪切/刪除任何內容,不是單個字符,我只想最終得到兩行文本而不是一行,並且能夠決定應該在哪裡進行分割。我該如何使用sedorawksplit來做到這一點?不太關心我使用哪一個,但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}'

相關內容