想要在某文本开头 或/和 结尾添加一行?
awk版
BEGIN
在开头添加,END
在结尾添加;1
awk 'BEGIN{print "START"}; {print}; END{print "END"}'
sed版
sed用 1
来匹配第一行,i
执行插入操作,$
匹配最后一行,a
执行追加,1
sed -e $'1i\\\nSTART' -e $'$a\\\nEND'
echo版
在管道 |
操作符中用{命令1;命令2;命令3…}
来执行多个命令并告诉程序这是单个复合命令。1
2
3content-generator |
{ echo START; cat; echo END; } |
postprocessor
忽视第一行
1 | #head打印第一行,tail生成其他行来排序 |
忽略第一行,从第二行开始添加行号
1 | foo=$(head -n 1 table); echo -e "Record\t$foo"; tail -n +2 table | nl | sed 's/^[ ]*//' |
删除第一行
1 | awk 'NR!=1' |
添加系列多表头
如需添加M1,M2….M2016,一系列由字母和数字组合的表头?1
echo M{1..2016}; cat text.txt
在指定位置插入一列并赋值
1 | awk '{$3=NR==1?"add" OFS $3:"hope" OFS $3} 1' OFS="\t\t" text.txt |
按第一列将文件拆分并添加表头
1 | cat mainfile.txt |
参考资料
The header line: how to add, delete and ignore it
Adding header to sub files after splitting the main file using AWK Shell Programming and Scripting