如何将文本文件内容追加到目标文件且保留其前两行并去重?
保留目标文件前两行并追加源文件非重复内容的解决方案
核心命令
# 保留目标文件前两行到临时文件 head -n 2 user2.txt > temp.txt # 筛选源文件中未在目标文件(第三行及以后)出现的内容并追加 grep -vxFf <(tail -n +3 user2.txt) user1.txt >> temp.txt # 替换原目标文件 mv temp.txt user2.txt
命令拆解
head -n 2 user2.txt > temp.txt:提取user2.txt的前两行(需保留的固定内容)写入临时文件,彻底避免覆盖原有核心行<(tail -n +3 user2.txt):通过进程替换,提取user2.txt从第三行开始的所有已存在条目,作为去重的参照列表grep -vxFf ... user1.txt:-f:读取参照列表作为匹配模式-x:强制整行匹配,防止部分字符串匹配导致的误过滤-F:将参照内容视为固定字符串,而非正则表达式-v:反向输出,只保留user1.txt中未出现在参照列表里的新内容
mv temp.txt user2.txt:用处理后的临时文件替换原目标文件,完成最终更新
适配源文件含重复行的场景
如果user1.txt本身存在重复条目,可先对源文件去重再筛选:
head -n 2 user2.txt > temp.txt grep -vxFf <(tail -n +3 user2.txt) <(sort -u user1.txt) >> temp.txt mv temp.txt user2.txt
示例验证
- 源文件
user1.txt内容:
Phill Johne Marie Arthuro
- 目标文件初始
user2.txt内容:
Allow from: Phill Johne
执行命令后,user2.txt最终内容:
Allow from: Phill Johne Marie Arthuro
内容的提问来源于stack exchange,提问作者Allan Tori
相关产品推荐
相关产品推荐

