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

曾经
  • 119

用非手动方式。例如

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
回复
阅读 6.2k
2 个回答
陌辞寒
  • 1.9k
✓ 已被采纳
line=$(head -1 sample.txt|awk '{for (i = 1; i < NF; i++){printf i "\t"} print NF}')
sed -i "1i$line" sample.txt
premier
  • 5
新手上路,请多包涵

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

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

可以试试下面的思路:

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏