如何在Bash脚本或Python中给文件指定行末尾添加单词
在指定行末尾添加单词的正确方法
你之前的awk命令根本没处理原文件,只是把输入的内容直接覆盖写入file.txt,这肯定得不到想要的结果。下面给你两种靠谱的实现方式:
方法1:用sed直接修改
sed是处理文本行的利器,指定行号后直接在末尾追加内容就行:
read nome sed -i "2 s/$/ $nome/" file.txt
-i参数是直接修改原文件(macOS系统的sed要写成-i '')2代表要修改的行号(这里是第二行,按需改成你要的行号)s/$/ $nome/是把行尾($匹配行结束位置)替换成「空格+输入的单词」,实现追加效果
方法2:用awk处理后替换原文件
awk需要先读取原文件,对指定行做修改,其他行原样输出:
read nome awk -v add="$nome" 'NR==2 {print $0 " " add; next} {print}' file.txt > temp.txt && mv temp.txt file.txt
-v add="$nome"把shell里输入的nome变量传给awk的add变量NR==2判断当前是第二行时,输出原内容加空格加要追加的单词,next跳过后续逻辑直接处理下一行- 其他行直接原样输出,最后把结果写到临时文件再替换原文件,避免直接覆盖出问题
验证示例
原file.txt内容:
word1 word2 word3 word4 word1 word2 word3 word4 word5
输入word6后执行命令,file.txt会变成:
word1 word2 word3 word4 word1 word2 word3 word4 word5 word6
内容的提问来源于stack exchange,提问作者Michele Cozzolino
相关产品推荐
相关产品推荐

