我需要在文件的每一行的开头添加一部分。
如果我的数据是
Wombat muskrat gobbledegook ... tomatopaste
我需要做到这一点
000000001 Wombat 000000002 muskrat 000000003 gobbledegook ... 000009982 tomatopaste
使用特定的计算机。我可以用excel来做,但命令行解决方案将是首选,所以我可以将它集成到脚本中。有什么建议?这也是一个较小的文件。我还需要使用超过100万行的文件。在那一点上,excel处理得非常糟糕(打得很不好吃午饭)
答案 0 :(得分:4)
如果您需要使用零填充的数字,awk
可能是最佳解决方案:
awk '{printf "%09d ", NR}1' file.txt
Awk是一系列condition{action}
对。对于输入文件中的每一行,将按顺序评估条件,如果有,则评估相应的操作。可以省略一个或另一个。如果省略条件,则每行执行一次动作;如果省略动作,则打印当前行。我们的第一对是{printf...}
,这只是一个动作;因为没有条件,所以每行评估一次。 printf
是一个非常通用的函数,根据传递的格式字符串打印后续信息。我们在这里传递%09d
,它说参数应该是一个整数(d
),打印零填充(0
)到九位数(9
); %
启动格式说明符。给出的论点NR
是迄今为止在输入中看到的N
的{{1}}。{最后,我们有R
,这是下一个条件,总是如此。如前所述,缺少明确的操作,将打印当前行。
答案 1 :(得分:1)
仅限Bash解决方案:
( while read -r; do printf "%09u %s\n" $((++i)) "$REPLY" ; done ) < file.txt
编辑:以上内容依赖于i
未初始化或值为0这一事实。这样更安全(并且不需要{{1}子shell:
()