我想要文本文件的这一行
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}'