我想知道出了什么问题:
b="inst.;inst" ; echo $b | sed -e 's/\.;[^ ]/\n /'
inst
nst
预期输出
inst
inst
提前感谢任何线索。
答案 0 :(得分:4)
您的模式匹配三个字符。一个句号,一个分号和一些非空格字符。然后用两个字符(换行符和空格)替换所有这三个字符。
因此,您的模式与.;i
匹配,并将其替换为\n
。
您需要捕获并重新插入该非空格字符。
在模式中使用\([^ ]\)
,并使用\n \1
替换。
答案 1 :(得分:2)
您正在替换inst的第一个字符,捕获并保留它,即
sed -e 's/\.;\([^ ]\)/\n \1/'
答案 2 :(得分:0)
或者只是将命令改为b =“inst .; inst”; echo $ b | sed -e's / .; / \ n /' 替换。;换行