You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bash中提取文件行、替换子串并追加至原文件?

Bash实现提取替换并追加行的方案

假设目标文件名为test.txt,可以通过以下几种方式实现需求:

方法1:grep + sed组合命令

这是最直观的方式,分两步完成筛选和替换,再追加到原文件:

grep 'EF' test.txt | sed 's/EF/XY/g' >> test.txt
  • grep 'EF' test.txt:筛选出文件中所有包含子串EF的行
  • sed 's/EF/XY/g':将筛选出的行里所有EF替换为XY(g表示全局替换,一行中多个EF都会被替换)
  • >> test.txt:把处理后的结果追加到原文件的末尾

方法2:awk单命令处理(更高效)

如果文件较大,awk方法只需要读取一次文件,性能更优:

awk '/EF/{
    print
    modified = $0
    gsub(/EF/, "XY", modified)
    print modified >> FILENAME
    next
}1' test.txt

命令解释:

  • /EF/{...}:匹配到包含EF的行时执行大括号内的逻辑
  • print:先打印原行,保证原文件内容不变
  • modified = $0:复制当前行到变量modified
  • gsub(/EF/, "XY", modified):全局替换modified里的EF为XY
  • print modified >> FILENAME:将修改后的行追加到当前处理的文件(FILENAME即为输入的test.txt)
  • next:跳过后续逻辑,直接处理下一行
  • 1:对不匹配EF的行,默认执行打印操作,保持原内容

注意事项

  • 操作前建议备份原文件,比如执行cp test.txt test.txt.bak,避免误操作导致数据丢失
  • 如果需要区分大小写,可以在grep或awk中添加大小写不敏感的参数,比如grep -i 'EF'或者awk的/EF/i

内容的提问来源于stack exchange,提问作者aroma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 13:15:24