我希望每次在同一行的文本文件中出现两个Curly括号时插入一个新行,但是我希望在第一个大括号之后或第二个大括号之前插入这个新行。 有没有办法通过使用sed,grep等命令来实现这一目的。
以下是一个例子:
在:
你好,你好吗?
我没事。 }感谢{..
后:
你好,{
你好吗?我没事。 }
感谢{..
(或)
您好,{how
你是吗?我没事。 }感谢
{..
我试过下面的命令,但是即使文件中的行有单个花括号,它也会添加新行,我想只在有两个括号的情况下才添加新行:
(或)
答案 0 :(得分:0)
尝试
$ sed 's/[{}]/&\n/' ip.txt
Hello, {
how} are you?
I am fine. }
Thanks{..
[{}]
是一个匹配{
或}
&
将匹配
仅在行中存在{
和}
时替换
$ cat ip.txt
Hello, {how} are you?
fo{o
I am fine. }Thanks{..
$ sed '/{.*}\|}.*{/ s/[{}]/&\n/' ip.txt
Hello, {
how} are you?
fo{o
I am fine. }
Thanks{..
/{.*}\|}.*{/
是符合条件的表达式,以匹配{
后跟}
,反之亦然