【发布时间】:2018-09-07 16:43:49
【问题描述】:
我有由各种处理步骤产生的文本文件,因此根据步骤的顺序,每行的顺序列和长度会从一个文件更改为下一个文件。
所以 file1 将是:
moo 100.35 blah 9 85 0.0038
moo 93.8 bluu 10 85 0.0042
file2 是:
125.2 129.3 moo 0.23
123.5 125.3 moo 0.23
我想把它改成:
1_horatio 100.35 blah 9 85 0.0038
2_horatio 93.8 bluu 10 85 0.0042
和
125.2 129.3 1_clarence 0.23
123.5 125.3 2_clarence 0.23
moo 的新名称上的数字每行递增。名称是输入变量。
这是我迄今为止一直在尝试的:
newnam=$1
awk -v nnam=$newnam 'BEGIN{ count=1 } {imgn=count"_"nam; print imgn,$2,$3,$4 count++ }' $2 > $3
然后我需要更改为:
newnam=$1
awk -v nam=$newnam 'BEGIN{ count=1 } {imgn=count"_"nam; print $1,$2,imgn,$4 count++ }' $2 > $3
我希望能够将列号作为变量,而不必担心有多少列。最多可以有 50 列,最多可以有 100 万行。
有没有办法在 awk 中做到这一点?还是用 awk bash?
【问题讨论】: