awk 不会替换所有列
Awk will not replace in all columns
我正在尝试使用 awk like this 替换文件的特定列。我可以使用
替换第 3 列中的 "r"
awk '{ sub(/r$/, "Q", ) }1' temp2.txt
或第 6 列中的“4”使用
awk '{ sub(/4$/, "Q", ) }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
尝试:awk '{ sub(/[[T]/, "XYZ", ) }1'
子第一个参数 /[[T]/
可以包含任何需要替换的字符 – 对于您的情况然后 T
.
正则表达式中的 $
匹配字符串结尾 - 即它只会替换列末尾的文本。
如果要替换列中任意位置的文本,请使用 sub(/T/, "Q", )
,但它只会替换第一个匹配的文本。
要替换列中的所有“T”,请使用 gsub
而不是 sub
我正在尝试使用 awk like this 替换文件的特定列。我可以使用
替换第 3 列中的 "r"awk '{ sub(/r$/, "Q", ) }1' temp2.txt
或第 6 列中的“4”使用
awk '{ sub(/4$/, "Q", ) }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
尝试:awk '{ sub(/[[T]/, "XYZ", ) }1'
子第一个参数 /[[T]/
可以包含任何需要替换的字符 – 对于您的情况然后 T
.
正则表达式中的 $
匹配字符串结尾 - 即它只会替换列末尾的文本。
如果要替换列中任意位置的文本,请使用 sub(/T/, "Q", )
,但它只会替换第一个匹配的文本。
要替换列中的所有“T”,请使用 gsub
而不是 sub