Bash 搜索并替换为sed不工作
我想使用sed进行搜索和替换,但它似乎不起作用。 我想我犯了一个我看不出来的愚蠢的错误 这是我的file.txt:Bash 搜索并替换为sed不工作,bash,sed,Bash,Sed,我想使用sed进行搜索和替换,但它似乎不起作用。 我想我犯了一个我看不出来的愚蠢的错误 这是我的file.txt: PFPR03 PA1448770 PFPR03 PA1448780 PFPR03 PA1448790 PFPR03 PA1448800 PFPR03 PA1448810 PFPR03 PA1448830 PFPR03 PA1448840 PFPR03 PA1448850 PFPR03 PA1448860 PFPR03 PA1448870 我想将PA144877
PFPR03 PA1448770
PFPR03 PA1448780
PFPR03 PA1448790
PFPR03 PA1448800
PFPR03 PA1448810
PFPR03 PA1448830
PFPR03 PA1448840
PFPR03 PA1448850
PFPR03 PA1448860
PFPR03 PA1448870
我想将PA1448770更改为PA14_48770,即在PA14后面添加下划线
以下是我尝试过的几个示例,它们都不会影响文件:
sed 's/^PA14/PA14_/g' file.txt
sed 's/^PA14([0-9]*)/PA14_\1/' file.txt
感谢您的帮助,这是因为
^
意味着线路开始。使用\b
作为单词边界:
sed 's/\bPA14/PA14_/g' file
PFPR03 PA14_48770
PFPR03 PA14_48780
PFPR03 PA14_48790
PFPR03 PA14_48800
PFPR03 PA14_48810
PFPR03 PA14_48830
PFPR03 PA14_48840
PFPR03 PA14_48850
PFPR03 PA14_48860
PFPR03 PA14_48870
备注:在OSX(BSD)sed
上使用:
sed 's/[[:<:]]PA14/PA14_/g' file
sed的/[[:您正在使用这个标记^
,意思是字符串的开头
。它要么是一行的开头,要么是整个文件的开头,但肯定不是一个单词的开头。
因此,这应该是可行的:
sed's/PA14/PA14\ug/file.txt
编辑
我强烈建议您练习正则表达式。您可以在live中测试您的表达式,它们对令牌有很多很好的解释。^
在行首锚定。PA14
从不在行首,因此您的搜索永远找不到它。您为什么使用g
?它出现了不止一次吗每行e?或键入稍少一点:s/PA14/&