在Linux中如何在.txt文件末尾添加列?
我想在a.txt文件末尾的每行中添加一个新列,该列只包含“2”作为值,并将新文件另存为输出。我将R中的input.txt文件保存为选项卡分隔的文件。我尝试了以下代码在Linux中如何在.txt文件末尾添加列?,linux,awk,add,Linux,Awk,Add,我想在a.txt文件末尾的每行中添加一个新列,该列只包含“2”作为值,并将新文件另存为输出。我将R中的input.txt文件保存为选项卡分隔的文件。我尝试了以下代码 awk-v RS='\r\n''BEGIN{OFS='\t}{print$0,“2”}input.txt>output.txt 但它会将2作为附加值添加到最后一列,并在output.txt文件的每个数据行后添加一个空行 我的输入.txt SAMPLE rs1 rs2 rs3 rs4 rs5
awk-v RS='\r\n''BEGIN{OFS='\t}{print$0,“2”}input.txt>output.txt
但它会将2作为附加值添加到最后一列,并在output.txt文件的每个数据行后添加一个空行
我的输入.txt
SAMPLE rs1 rs2 rs3 rs4 rs5 rs6 rs7 rs8 rs9 rs10 rs11
6 0 0 0 0 0 0 0 0 0 0 0
7 0 0 0 0 0 0 0 0 0 0 0
10 1 1
14 0 0 0 0 0 0 0 0 0 0 0
19 0 0 0 0 0 0 0 0 0 0 0
34 0 0 0 0 0 0 0 0 0 0 0
40 1 1 1
41 0 0 0 0 0 0 0 0 0 0 0
46 1
58 1
67 0 0 0 0 0 0 0 0 0 0
69 1
71 0 0 0 0 0 0 0 0 0 0 0
76 0 0 0 0 0 0 0 0 0 0 0
78 0 0 0 0 0 0 0 0 0 0 0
80 1
83 0 0 0 0 0 0 0 0 0 0
84 1
86 1
90 1
92 0 0 0 0 0 0 0 0 0 0
94 0 0 0 0 0 0 0 0 0 0
95 0 0 0 0 0 0 0 0 0 0
我使用上述代码得到的output.txt
SAMPLE rs1 rs2 rs3 rs4 rs5 rs6 rs7 rs8 rs9 rs10 rs112
6 0 0 0 0 0 0 0 0 0 0 02
7 0 0 0 0 0 0 0 0 0 0 02
10 1 1 2
14 0 0 0 0 0 0 0 0 0 0 02
19 0 0 0 0 0 0 0 0 0 0 02
34 0 0 0 0 0 0 0 0 0 0 02
40 1 1 12
41 0 0 0 0 0 0 0 0 0 0 02
46 1 2
58 1 2
67 0 0 0 0 0 0 0 0 0 02
69 1 2
71 0 0 0 0 0 0 0 0 0 0 02
76 0 0 0 0 0 0 0 0 0 0 02
78 0 0 0 0 0 0 0 0 0 0 02
80 1 2
83 0 0 0 0 0 0 0 0 0 02
84 1 2
86 1 2
90 1 2
92 0 0 0 0 0 0 0 0 0 02
94 0 0 0 0 0 0 0 0 0 02
95 0 0 0 0 0 0 0 0 0 02
如何在末尾添加一列2?另外,是否有办法在output.txt文件中向该列添加标题(例如,额外标题)?试试看
$ awk -v RS='\r\n' 'BEGIN{FS=OFS="\t"} {print $0, (NR==1?"header":2)}' input.txt > output.txt
似乎你想要塞德:
$ t=$(printf '\t')
$ sed -e '1s/$/'"${t}header/" -e '1!s/$/'"${t}2/" input > output
我猜您没有使用GNU awk,因此
RS='\r\n'
被视为只是RS='\r'
从而将换行符作为下一条记录的一部分。还有“BEGIN{OFS='\t'}…”脚本中的code>会将OFS
设置为空字符串,因为它会尝试使用名为t
的未初始化awk变量的内容-计算'
s以查看\t
是否在awk程序之外
试试这个:
awk 'BEGIN{OFS="\t"} {sub(/\r$/,""); print $0, (NR>1 ? 2 : "header")}' input.txt > output.txt
上述操作将在每个UNIX系统的任何shell中使用任何awk,无论您的行是以\r\n
结尾还是仅以\n
结尾。代码会在右侧添加列和标题,但仍会在文件中的每个数据行后添加额外的空行。我如何去掉这些空白行?你应该提到这需要GNU awk。对于其他AWK,它将只使用\r
作为RS,并打印随后的\n
作为下一条记录的开始。它工作正常,但将^M添加到“rs11”列样本rs1 rs2 rs3 rs4 rs5 rs6 rs7 rs8 rs9 rs10 rs11^M头6 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 ^m2
如何从output.txt文件的第二个最后一列(rs11)中删除^M?IMO,在执行任何操作之前,应将输入文件转换为unix行结尾。