我正在尝试使用awk like this替换文件的某个列。我可以使用
替换第3列中的“r”awk '{ sub(/r$/, "Q", $3) }1' temp2.txt
或第6列中的“4”使用
awk '{ sub(/4$/, "Q", $6) }1' temp2.txt
但是,我不能在第4栏中的“T”上进行替换。
该文件的内容为
cat temp2.txt
224245 CO2_Cells_50_V_-100_P_760 r 2016-08-18T13:35:12.337 long@d6copt025.crc.nd.edu 4
224256 CO2_Cells_100_V_-200_P_760 r 2016-08-18T13:35:15.408 long@d6copt039.crc.nd.edu 4
224261 CO2_Cells_100_V_-250_P_760 r 2016-08-18T13:35:16.425 long@d6copt012.crc.nd.edu 4
224262 CO2_Cells_150_V_-250_P_760 r 2016-08-18T13:35:16.426 long@d6copt075.crc.nd.edu 4
224264 CO2_Cells_250_V_-250_P_760 r 2016-08-18T13:35:17.438 long@d6copt142.crc.nd.edu 4
224266 CO2_Cells_100_V_-300_P_760 r 2016-08-18T13:35:17.440 long@d6copt145.crc.nd.edu 4
224267 CO2_Cells_150_V_-300_P_760 r 2016-08-18T13:35:17.442 long@d6copt149.crc.nd.edu 4
224268 CO2_Cells_200_V_-300_P_760 r 2016-08-18T13:35:17.443 long@d6copt143.crc.nd.edu 4
224269 CO2_Cells_250_V_-300_P_760 r 2016-08-18T13:35:18.460 long@d6copt128.crc.nd.edu 4
224271 CO2_Cells_100_V_-350_P_760 r 2016-08-18T13:35:18.463 long@d6copt136.crc.nd.edu 4
224272 CO2_Cells_150_V_-350_P_760 r 2016-08-18T13:35:18.464 long@d6copt207.crc.nd.edu 4
224273 CO2_Cells_200_V_-350_P_760 r 2016-08-18T13:35:18.466 long@d6copt201.crc.nd.edu 4
224274 CO2_Cells_250_V_-350_P_760 r 2016-08-18T13:35:19.539 long@d6copt226.crc.nd.edu 4
224277 CO2_Cells_150_V_-400_P_760 r 2016-08-18T13:35:19.543 long@d6copt250.crc.nd.edu 4
224278 CO2_Cells_200_V_-400_P_760 r 2016-08-18T13:35:19.545 long@d6copt212.crc.nd.edu 4
224279 CO2_Cells_250_V_-400_P_760 r 2016-08-18T13:35:20.649 long@d6copt184.crc.nd.edu 4
224282 CO2_Cells_150_V_-450_P_760 r 2016-08-18T13:35:20.653 long@d6copt074.crc.nd.edu 4
224283 CO2_Cells_200_V_-450_P_760 r 2016-08-18T13:35:20.654 long@q16copt062.crc.nd.edu 4
224287 CO2_Cells_150_V_-500_P_760 r 2016-08-18T13:35:21.718 long@d6copt030.crc.nd.edu 4
224288 CO2_Cells_200_V_-500_P_760 r 2016-08-18T13:35:21.720 long@q16copt063.crc.nd.edu 4
224289 CO2_Cells_250_V_-500_P_760 r 2016-08-18T13:35:21.721 long@q16copt063.crc.nd.edu 4
224522 CO2_Cells_250_V_-450_P_760 r 2016-08-18T14:54:09.720 long@d6copt030.crc.nd.edu 4
224699 CO2_Cells_50_V_-150_P_760 r 2016-08-18T18:04:18.900 long@q16copt062.crc.nd.edu 4
答案 0 :(得分:3)
正则表达式中的$
匹配字符串的结尾 - 即它只会替换列末尾的文本。
如果要在列中的任何位置替换文本,请使用sub(/T/, "Q", $4)
,但它只会替换第一个匹配的文本。
要替换列中的所有“T”,请使用gsub
代替sub
答案 1 :(得分:1)
尝试:awk '{ sub(/[[T]/, "XYZ", $4) }1'
子第一个参数/[[T]/
可以包含任何需要替换的字符 - 对于您的情况,然后是T
。