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=
--=_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
用字符串和行字符串和行号替换字符串。
一旦您对上述命令(在终端上打印输出)没问题,并且如果您想将输出保存到 Input_file 本身。
awk '{sub(/priloha/,"&"FNR)} 1' Input_file > temp && mv temp Input_file
推荐阅读
- json - 创建 JSON 列出 Groovy 脚本中的所有 Jenkins 特定环境变量
- docker - 适用于 Windows 的 Docker 桌面 - 卷的确切位置
- python - 如何使用 open cv 在视频中绘制虚线
- r - 在 R 中可以有日期变量的日-月-年格式吗?
- html - 用 svg 改变元素
- scala - 使用 ZIO Test 模拟任何值作为输入参数
- javascript - Chrome/Firefox 不会在 HTML 播放器中播放 HLS 视频/mp2t 视频流
- python - 如何在 tkinter 中的按钮之间添加空格?
- spring-boot - KAFKA:拆分和重试(还剩 1 次尝试)。错误:MESSAGE_TOO_LARGE
- css - 更改 vuetify v-expansion-panel-content 的填充