将行号附加到sed中的选定行

将行号附加到sed中的选定行,sed,Sed,我有一封与许多附件同名的损坏电子邮件“priloha” --=_6307cd41740728f4463731ed=a0cf2ceb-1b64-55a3-9dc3-738b8e19552b_= Content-Type: image/jpeg; name=priloha Content-Transfer-Encoding: base64 Content-Disposition: attachment; size=50103; filename=priloha tABRRRQB/9k= --=_6

我有一封与许多附件同名的损坏电子邮件“priloha”

--=_6307cd41740728f4463731ed=a0cf2ceb-1b64-55a3-9dc3-738b8e19552b_=
Content-Type: image/jpeg;
name=priloha
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
size=50103;
filename=priloha

tABRRRQB/9k=
--=_6307cd41740728f4463731ed=a0cf2ceb-1b64-55a3-9dc3-738b8e19552b_=
Content-Type: image/jpeg;
name=priloha
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
size=59445;
filename=priloha
我需要在单词“priloha”后面加上行号或 要以这种方式修改带有“priloha”一词的行,请执行以下操作:

name=priloha23
filename=priloha34
name=priloha134
filename=priloha145
还有更多像这样的线,当然要把线夹在中间

这些数字可以是任何唯一的标识符,比如说行号

我有一个工作脚本:

sed 's/\r//g' input.eml >output.eml # dos end of lines into unix ones
for i in {10..50} # cca 30 attachments to procede 
 do
  sed -i "0,/name=priloha$/s//name=priloha$i/"        output.eml
  sed -i "0,/filename=priloha$/s//filename=priloha$i/"  output.eml
 done
你大概会承认这有点笨拙。 你能告诉我如何一次成功吗。 大概是这样的:

sed“/name=priloha/s/name=priloha/name=priloha[当前行#]/”input.eml>output.eml#不工作

期望值:查找带有“name=priloha”的行,将其更改为“name=priloha[当前行#]”


我期待着您的明智想法,并提前表示感谢

如果您对
awk
没有问题,请尝试以下内容

awk '{sub(/priloha/,"&"FNR)} 1'  Input_file
这将用字符串、行字符串和行号替换字符串
priloha

一旦您对上述命令(该命令在终端上打印输出)确定,并且希望将输出保存到输入文件本身

awk '{sub(/priloha/,"&"FNR)} 1' Input_file > temp && mv temp Input_file

如果您对
awk
没有问题,请尝试以下内容

awk '{sub(/priloha/,"&"FNR)} 1'  Input_file
这将用字符串、行字符串和行号替换字符串
priloha

一旦您对上述命令(该命令在终端上打印输出)确定,并且希望将输出保存到输入文件本身

awk '{sub(/priloha/,"&"FNR)} 1' Input_file > temp && mv temp Input_file
这可能适用于您(GNU-sed):

第一个sed调用将包含单词
priloha
的行的行号插入到文件中。第二次调用,将行号附加到单词
priloha

中,这可能适合您(GNU-sed):


第一个sed调用将包含单词
priloha
的行的行号插入到文件中。第二次调用,在单词
priloha

后面加上行号。请检查我的解决方案,让我知道这是否对您有帮助?亲爱的Ravinder先生,是的,这是一个优秀的解决方案,我无法发明。这就是我喜欢的Linux操作系统——它是由真正热爱计算机的人运行的。:-)非常感谢。你能检查一下我的解决方案,让我知道这是否对你有帮助吗?亲爱的拉文德先生,是的,这是一个很好的解决方案,我无法发明。这就是我喜欢的Linux操作系统——它是由真正热爱计算机的人运行的。:-)非常感谢。我不反对awk,它通过awk更简单,但问题是,如何在sed中实现它,所以我将前面的问题标记为正确的问题。但这两种方法都很有效。谢谢后脚本。我必须更加关注awk,正如我所看到的…:-)@xerostomus,np,我很高兴我们能帮助你,干杯,快乐学习。我不反对awk,它通过awk更简单,但问题是,如何在sed中实现它,所以我将前面的问题标记为正确的问题。但这两种方法都很有效。谢谢后脚本。我必须更加关注awk,正如我所看到的…:-)@口干,np的所有,我很高兴我们可以帮助你,干杯和快乐的学习。