连接文本文件的两列
Concatenate two columns of a text file
我有一个类似
的 tsv 文件
1 2 3 4 5 ...
a b c d e ...
x y z j k ...
如何合并两个连续的列,比如第 2 列和第 3 列,以获得
1 2-3 4 5 ...
a b-c d e ...
x y-z j k ...
我需要代码来处理具有不同列数的文本文件,所以我不能使用 awk 'BEGIN{FS="\t"} {print "\t""-""\t""\t"}' file
awk
是我为任务考虑的第一个工具,也是我正在尝试学习的工具,所以我对使用它的答案非常感兴趣,但是任何其他工具的解决方案都会非常有用赞赏。
使用 sed
命令 tsv 文件:
sed 's/\t/-/2' file
输出:
1 2-3 4 5 ...
a b-c d e ...
x y-z j k ...
与awk
:
awk -v OFS='\t' -v col=2 '{
$(col)=$(col)"-"$(col+1); # merge col and col+1
for (i=col+1;i<NF;i++) $(i)=$(i+1); # shift columns right of col+1 by one to the left
NF--; # remove the last field
}1' file # print the record
输出:
1 2-3 4 5 ...
a b-c d e ...
x y-z j k ...
以下 awk
可能会对您有所帮助,如果您不担心小 space 将在第三个字段无效时创建。
awk '{="-";=""} 1' Input_file
我有一个类似
的 tsv 文件1 2 3 4 5 ...
a b c d e ...
x y z j k ...
如何合并两个连续的列,比如第 2 列和第 3 列,以获得
1 2-3 4 5 ...
a b-c d e ...
x y-z j k ...
我需要代码来处理具有不同列数的文本文件,所以我不能使用 awk 'BEGIN{FS="\t"} {print "\t""-""\t""\t"}' file
awk
是我为任务考虑的第一个工具,也是我正在尝试学习的工具,所以我对使用它的答案非常感兴趣,但是任何其他工具的解决方案都会非常有用赞赏。
使用 sed
命令 tsv 文件:
sed 's/\t/-/2' file
输出:
1 2-3 4 5 ...
a b-c d e ...
x y-z j k ...
与awk
:
awk -v OFS='\t' -v col=2 '{
$(col)=$(col)"-"$(col+1); # merge col and col+1
for (i=col+1;i<NF;i++) $(i)=$(i+1); # shift columns right of col+1 by one to the left
NF--; # remove the last field
}1' file # print the record
输出:
1 2-3 4 5 ...
a b-c d e ...
x y-z j k ...
以下 awk
可能会对您有所帮助,如果您不担心小 space 将在第三个字段无效时创建。
awk '{="-";=""} 1' Input_file