Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何使用linux命令在现有选项卡增量文件中追加索引?_Bash_Shell_Awk - Fatal编程技术网

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
总是零。