如何更简洁地提取文件指定列内容并插入另一文件头部?
精简实现脚本
方案1(全平台兼容,无兼容性问题)
{ awk 'NR>1 {printf s++ ? "|" $1 : $1} END {print ""}' file1; cat file2; } > tmp && mv tmp file2
逻辑说明:
- 单条awk完成字段提取和拼接:跳过第1行表头,首个有效字段直接输出,后续字段前先拼接
|,避免生成末尾多余的分隔符,最后输出换行符保证格式正常 - 命令组合并拼接结果与原file2内容,通过临时文件过渡后覆盖原file2,避免直接重定向导致文件内容被清空的问题
方案2(GNU环境可用,更短)
如果是使用GNU sed(默认Linux发行版自带),可以用更短的写法:
sed -i "1i $(awk 'NR>1 {printf s++ ? "|" $1 : $1}' file1)" file2
逻辑说明:
- 用awk的输出作为sed插入的内容,直接插入到file2的第1行之前,
-i参数直接修改原文件
内容的提问来源于stack exchange,提问作者Yang Xu
相关产品推荐
相关产品推荐

