如何将文件首行复制到末行?寻求更简便的实现方案
几种简便实现文件首行追加到末尾的方法
嘿,这个需求用命令行工具或者极简脚本就能轻松搞定,比复杂代码高效多了!给你分享几个超实用的简便方案:
1. 用awk(最直观的单行命令)
awk天生擅长处理文本行,这个写法清晰易懂:
awk 'NR==1{line=$0} {print} END{print line}' your_file.txt
- 逻辑:
NR==1时把首行内容存到变量line里;{print}打印每一行;最后END块把存好的首行追加到末尾。
2. 用sed(单行流处理)
sed的写法更紧凑,适合熟悉正则的朋友:
sed -n '1h;1!p;${g;p}' your_file.txt
- 逻辑:
1h把首行存入sed的“保留空间”;1!p打印除首行外的所有行;${g;p}在最后一行时,把保留空间的首行取出来并打印,实现追加。
或者用更易懂的组合命令,对新手友好:
first_line=$(head -n1 your_file.txt) cat your_file.txt <(echo "$first_line")
先通过head提取首行,再用cat把原文件和首行内容拼在一起输出。
3. Python极简脚本
如果想用脚本语言,一行式的原地修改写法(适合小文件场景):
with open("your_file.txt", "r+") as f: content = f.read() f.seek(0, 2) f.write(content.splitlines()[0] + "\n")
要是想生成新文件,写法更短:
open("output.txt", "w").write(open("your_file.txt").read() + open("your_file.txt").readline())
4. 原地修改文件的技巧
如果想直接修改原文件而不是输出到新文件,可以借助sponge工具(需要先安装moreutils包):
awk 'NR==1{line=$0} {print} END{print line}' your_file.txt | sponge your_file.txt
sponge会先接收所有输出内容,再一次性写入原文件,避免覆盖问题。
内容的提问来源于stack exchange,提问作者OXXO
相关产品推荐
相关产品推荐

