Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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
奇怪的行为awk最后一个字符“]&引用;_Awk_Carriage Return - Fatal编程技术网

奇怪的行为awk最后一个字符“]&引用;

奇怪的行为awk最后一个字符“]&引用;,awk,carriage-return,Awk,Carriage Return,我在尝试将文件中的某些列括起来时遇到了奇怪的awk行为: batch ID tumor_reads2_fastqgzs tumor_reads_fastqgzs tumor_reads2_fastqgzs ID tumor_reads_fastqgzs ID 9_S8 9_S8_L001_R2_001.fastq.gz 9_S8_L001_R1_001.fastq.gz file-Fk3BgVj4yBGZqQvF2VV2Q2Z4

我在尝试将文件中的某些列括起来时遇到了奇怪的awk行为:

batch ID        tumor_reads2_fastqgzs   tumor_reads_fastqgzs    tumor_reads2_fastqgzs ID        tumor_reads_fastqgzs ID
9_S8    9_S8_L001_R2_001.fastq.gz       9_S8_L001_R1_001.fastq.gz       file-Fk3BgVj4yBGZqQvF2VV2Q2Z4   file-Fk3BgfQ4yBGYz756BGvbzkP8
7_S6    7_S6_L001_R2_001.fastq.gz       7_S6_L001_R1_001.fastq.gz       file-Fk3Bg884yBGYF4xXJjpf08f8   file-Fk3Bg1j4yBGvbp9VK2ZQ76G3
10_S9   10_S9_L001_R2_001.fastq.gz      10_S9_L001_R1_001.fastq.gz      file-Fk3Bfg84yBGq9g7zJk5kv435   file-Fk3BfVQ4yBGxxPZy6pjxv635
3_S3    3_S3_L001_R2_001.fastq.gz       3_S3_L001_R1_001.fastq.gz       file-Fk3Bf3Q4yBGq9g7zJk5kv42z   file-Fk3BfB04yBGYz756BGvbzkGk
15_S14  15_S14_L001_R2_001.fastq.gz     15_S14_L001_R1_001.fastq.gz     file-Fk3Bbp04yBGkyPqy2073BKf7   file-Fk3BbV84yBGq00fKK3j5KjG5
这是我的文件,我想在第4列和第5列的周围放上括号,所以:

awk -v OFS="\t" '{if($0 ~ /^batch/){print $0}else{print $1, $2, $3, "["$4"]", "["$5"]";}}' myfile
但它输出的结果是:

batch ID        tumor_reads2_fastqgzs   tumor_reads_fastqgzs    tumor_reads2_fastqgzs ID        tumor_reads_fastqgzs ID
]_S8    9_S8_L001_R2_001.fastq.gz       9_S8_L001_R1_001.fastq.gz       [file-Fk3BgVj4yBGZqQvF2VV2Q2Z4] [file-Fk3BgfQ4yBGYz756BGvbzkP8
]_S6    7_S6_L001_R2_001.fastq.gz       7_S6_L001_R1_001.fastq.gz       [file-Fk3Bg884yBGYF4xXJjpf08f8] [file-Fk3Bg1j4yBGvbp9VK2ZQ76G3
]0_S9   10_S9_L001_R2_001.fastq.gz      10_S9_L001_R1_001.fastq.gz      [file-Fk3Bfg84yBGq9g7zJk5kv435] [file-Fk3BfVQ4yBGxxPZy6pjxv635
]_S3    3_S3_L001_R2_001.fastq.gz       3_S3_L001_R1_001.fastq.gz       [file-Fk3Bf3Q4yBGq9g7zJk5kv42z] [file-Fk3BfB04yBGYz756BGvbzkGk
]5_S14  15_S14_L001_R2_001.fastq.gz     15_S14_L001_R1_001.fastq.gz     [file-Fk3Bbp04yBGkyPqy2073BKf7] [file-Fk3BbV84yBGq00fKK3j5KjG5
出于某种原因,最后一个括号将替换第一个字符。知道为什么吗?我怎样才能解决这个问题?
我也尝试过使用
sub()
,但它也做了同样的事情

你的代码对我有效。如果你的输入文件中有控制M个字符的机会,那么你可以添加一段代码来删除它们,你可以试试下面的方法吗

awk -v OFS="\t" '{gsub(/\r/,"");if($0 ~ /^batch/){print $0}else{print $1, $2, $3, "["$4"]", "["$5"]";}}' Input_file

您是对的,行的末尾有^M个字符。谢谢!