如何用SED或AWK实现类似cp file1 file2的整文件复制?
当然可以用 sed 或者 awk 实现类似 cp file1 file2 的整文件复制操作,不过说实话,这俩工具本来是用来做文本内容处理的,用它们来复制文件有点“杀鸡用牛刀”的意思——毕竟 cp 就是专门干这个活的,效率和功能都更适配。不过既然你好奇怎么实现,我给你具体的命令:
使用 SED 实现整文件复制
你只需要给 sed 传入一个空命令,它就会把输入文件的每一行原封不动地输出,再通过重定向写入目标文件:
sed '' file1 > file2
如果 file2 已经存在,这个命令会直接覆盖它,和 cp 的默认行为一致。要是想避免覆盖已有文件,你得结合 shell 的条件判断,但纯 sed 本身做不到这一点。
使用 AWK 实现整文件复制
awk 的写法更灵活,有两种常用方式:
- 显式打印每一行:
awk '{print}' file1 > file2
- 利用 awk 的默认行为——当条件为真时自动打印当前行,用
1代表永真条件:
awk '1' file1 > file2
这两种写法都能把 file1 的内容完整复制到 file2,同样会覆盖已存在的目标文件。
小提醒
虽然这俩工具能完成复制任务,但实际工作中还是优先用 cp 比较好,它支持保留文件权限、递归复制目录、不覆盖已有文件等多种实用参数,比 sed/awk 适合干这个活。
内容的提问来源于stack exchange,提问作者Christiano
相关产品推荐
相关产品推荐

