我是 Linux
上 sed
命令的初学者。现在我在文件中有一行:
exten => *97,ttttt
我想将这一行替换为两行:
exten => *97,aaaaa
exten => *97,bbbbb
如果原始文本是静态的,我可以这样写命令来替换行:
sed -e 's/,ttttt/,aaaaa\nexten => *97,bbbbb/' -i xxxx.txt
但不知何故,文件 xxxx.txt
是由脚本生成的,所以 *97
可能变成 *95
或其他东西,所以下一个time xxxx.txt
可能是这样的:
exten => *95,ttttt
这次我必须用这两行替换它:
exten => *95,aaaaa
exten => *95,bbbbb
在这种情况下,我无法执行上面的 sed
命令,因为它会将 *97
写入第二行。
有没有一种方法既不需要每次都重写 sed
命令又可以正确完成工作?
最佳答案
尝试保存所有数据,直到第 1 组和第 2 组中的数字。然后用它们后面的不同字符串和它们之间的换行符替换两次:
sed -e 's/^\(.*\)\(\*[0-9]\+\).*$/\1\2,aaaaa\n\1\2,bbbbb/' infile
它产生:
exten => *97,aaaaa
exten => *97,bbbbb
关于linux - sed:如何用可变字符替换一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19600558/