sed:根据字符串末尾的字符替换字符串的开头?

sed:根据字符串末尾的字符替换字符串的开头?

我试图根据行尾的数字sed插入 afoo或 a 。bar如果该行以 结尾1,我需要该行以 开头foo。如果该行以 结尾2,我需要该行以 开头bar

我一直在尝试这些解决方案,但我陷入困境:

sed -e 's/^/foo/;s/:1$/:1/' input.txt
sed -e 's/:1$/^foo/' input.txt

输入

aaaaa:1
bbbbb:2
ccccc:1

期望的输出

fooaaaaa:1
barbbbbb:2
fooccccc:1

答案1

你可以通过文本匹配选择行并对它们应用单独的替换:

$ sed -e '/:1$/s/^/foo/' -e '/:2$/s/^/bar/' input
fooaaaaa:1
barbbbbb:2
fooccccc:1

相关内容