linux文本操作:如何给以制表符分隔的数据文本首行添加列号


用非手动方式。例如


 abc    abc    123    123
asd    ahg    56     789
esh    huh    788    789

转化为:


 1       2      3      4
abc    abc    123    123
asd    ahg    56     789
esh    huh    788    789

awk Linux perl cat

科学贵公子 10 years, 7 months ago

 line=$(head -1 sample.txt|awk '{for (i = 1; i < NF; i++){printf i "\t"} print NF}')
sed -i "1i$line" sample.txt

死D執政官 answered 10 years, 7 months ago

sed '1 i1\t2\t3\t4' -i 文件名

擦,这种写法似乎和手工差不多啊

可以试试下面的思路:

head -1 文件名 | gawk '{print NF}' 显示列数
head -1 | sed 's/$/&\tn/g' -i 文件名 在行末添加制表符; n 表示添加第几列的列数

然后 在shell脚本中 判断列数 结合 for 循环 应该能解决

lws0823 answered 10 years, 7 months ago

Your Answer