Bash 如何使用linux命令在现有选项卡增量文件中追加索引?
我在下面有一个文件,它是以制表符分隔的Bash 如何使用linux命令在现有选项卡增量文件中追加索引?,bash,shell,awk,Bash,Shell,Awk,我在下面有一个文件,它是以制表符分隔的 TK 015_LIT NA CAT mask 我希望它被复制,以便使其成为一个大文件,如下所示 TK 015_LIT NA CAT mask1 TK 015_LIT NA CAT mask2 TK 015_LIT NA CAT mask3 TK 015_L
TK 015_LIT NA CAT mask
我希望它被复制,以便使其成为一个大文件,如下所示
TK 015_LIT NA CAT mask1
TK 015_LIT NA CAT mask2
TK 015_LIT NA CAT mask3
TK 015_LIT NA CAT mask4
TK 015_LIT NA CAT mask5
TK 015_LIT NA CAT mask6
counter=0
for start in {1..5}
do
awk '{printf("%s \t %s \t %s \t %s \t %s \t %d \n",$1,$2,$3,$4,$5,$counter)}' ./medium/cause1
let counter=1+$counter
echo $counter
done
但是,我将其编码如下,但它不起作用,因为即使我将其递增,掩码
旁边的数字始终为零。我的代码如下所示
TK 015_LIT NA CAT mask1
TK 015_LIT NA CAT mask2
TK 015_LIT NA CAT mask3
TK 015_LIT NA CAT mask4
TK 015_LIT NA CAT mask5
TK 015_LIT NA CAT mask6
counter=0
for start in {1..5}
do
awk '{printf("%s \t %s \t %s \t %s \t %s \t %d \n",$1,$2,$3,$4,$5,$counter)}' ./medium/cause1
let counter=1+$counter
echo $counter
done
无论如何,如何实现我的目标?使用
awk
:
$ awk '{for (i=0;i<3;i++)print $0 i+1}' file
TK 015_LIT NA CAT mask1
TK 015_LIT NA CAT mask2
TK 015_LIT NA CAT mask3
您可以使用
-v
参数将环境变量传递给awk。在您的代码中,计数器
仅是一个awk变量,因此每次调用时都使用0
初始化。使用awk
:
$ awk '{for (i=0;i<3;i++)print $0 i+1}' file
TK 015_LIT NA CAT mask1
TK 015_LIT NA CAT mask2
TK 015_LIT NA CAT mask3
您可以使用
-v
参数将环境变量传递给awk。在您的代码中,计数器
仅是一个awk变量,因此每次调用时都使用0
进行初始化。您可以使用以下awk单行程序进行初始化:
awk -v times=5 '{while(i<times) print $0(++i)}' file
您可以使用以下awk one liner进行此操作:
awk -v times=5 '{while(i<times) print $0(++i)}' file
使用nl
(man-nl
:nl-文件行数
)添加行号,并使用rev
将其添加到末尾(将按原样适用于前9行):
使用nl
(man-nl
:nl-文件行数
)添加行号,并使用rev
将其添加到末尾(将按原样适用于前9行):
我刚刚把它添加到我的答案中,但是被打断了,现在你的答案包括:你应该提到,这也是为什么
$counter
总是零的问题的答案。我刚刚把它添加到我的答案中,但是被打断了,现在你的答案包括:你应该提到,这里还有一个问题的答案,为什么$counter
总是零。