macOS下使用shell匹配双文件内容并向匹配行追加指定字符串
macOS Shell 实现 Podfile 行匹配追加内容方案
你可以直接使用 macOS 系统自带的 awk 工具实现需求,无需额外安装任何软件,操作步骤如下:
前置操作(可选,建议执行)
先备份原文件避免操作失误丢失内容:
cp Main.txt Main.txt.bak
实现命令
1. 仅预览修改结果(不修改原文件)
执行以下命令会直接在终端输出处理后的内容,你可以先验证是否符合预期:
awk 'FNR==NR { prefix[FNR]=$0; next } { for (i in prefix) { if (index($0, prefix[i]) == 1) { $0 = $0 ", :binary => true"; break } } }1' Module.txt Main.txt
2. 直接修改原文件
确认预览结果无误后,执行以下命令直接修改 Main.txt:
awk -i inplace 'FNR==NR { prefix[FNR]=$0; next } { for (i in prefix) { if (index($0, prefix[i]) == 1) { $0 = $0 ", :binary => true"; break } } }1' Module.txt Main.txt
如果你使用的是非常旧版本的 macOS 系统,执行带
-i inplace的命令报错,可以用重定向方式替换原文件:awk 'FNR==NR { prefix[FNR]=$0; next } { for (i in prefix) { if (index($0, prefix[i]) == 1) { $0 = $0 ", :binary => true"; break } } }1' Module.txt Main.txt > temp.txt && mv temp.txt Main.txt
命令逻辑说明
- 第一步先读取
Module.txt的所有行,存为前缀匹配规则存入数组 - 第二步逐行读取
Main.txt,判断当前行是否以任意一条前缀规则开头 - 匹配成功的行在末尾追加
, :binary => true,不匹配的行原样输出
内容的提问来源于stack exchange,提问作者nitin upadhyay
相关产品推荐
相关产品推荐

