我是shell脚本的新手,我有一个包含多个记录的文本文件,第一个记录结束和第二个记录开始在同一行
"-}{"
所以我想用
来打破这个链"-} #line1
{ #line2"
我尝试如下:方法1
sed 's/-}{//-} n {' file.txt
方法2 tr '-}{' 'n'
有谁能帮我一下吗?使用您显示的示例,请尝试以下awk
代码。只需将-}{
替换为-}
新行{
并打印值。
echo '"-}{"' | awk '{sub(/-}{/,"-}n{")} 1'
转义太多
也是s/<pattern>/<replacement>/
。有3个/
,最后一个在最后。
$ echo '"-}{"' | sed 's/-}{/-} n {/'
"-}
{"
这是不可能与tr
, tr
是为单个字符翻译。如果您想要tr -- '-}{' 'n'
,那么tr
将用换行符替换-
, }
和{
中的任何一个。
这可能适合您(GNU sed):
sed 'G;:a;s/-}({.*(.))/-}21/;ta;s/.$//' file
在当前行后面加一个换行符。
使用模式匹配在-}
和{
之间重复插入换行符。
当所有操作完成后,删除引入的换行符。
您可以使用()
捕获分隔符,并执行以下操作:
echo '"-}{" -} -}{' | sed -E 's/(-})({)/1n2/g'
"-}
{" -} -}
{