我在将某些行与数字常量(由参数给出)匹配时遇到了一些麻烦。例如,给定文件中的以下数据:
0.6880228954232877 0.2284901699470367 0.3868277922222205 T T T
0.7303175733143661 0.3618318512370564 0.3974056922222218 T T T
0.0000000000000000 0.0000000000000000 0.0000000000000000 T T T
0.0000000000000000 0.3333333333333357 0.0000000000000000 T T T
0.0000000000000000 0.6666666666666643 0.0000000000000000 T T T
0.8333728559007199 0.8332938107659444 0.0000000000000000 T T T
0.5226283985455709 0.2857115516559929 2.3313236566666689 T T T
0.1621334092166649 0.4671478452296256 2.3549492962962972 T T T
0.6160582554738738 0.3498000553315919 2.3391425111111133 T T T
0.7070022591099487 0.3040360596000298 2.3690645440740710 T T T
0.5183050106710922 0.2156253703264568 2.2883209644444449 T T T
0.5226283985455709 0.2857115516559929 3.3313236566666689 T T T
0.1621334092166649 0.4671478452296256 3.3549492962962972 T T T
0.6160582554738738 0.3498000553315919 3.3391425111111133 T T T
0.7070022591099487 0.3040360596000298 3.3690645440740710 T T T
0.5183050106710922 0.2156253703264568 3.2883209644444449 T T T
我想匹配第三个字段以“2.”开头的行,然后将这些行的字母“T”简单替换为“F”。
我已经尝试了几次但都失败了,例如使用 awk:(请注意,第一个 $1 是给出模式“2.”的 bash 参数。
awk -v pattern=$1 ' $3 ~ pattern { print $1,$2,$3" F F F" }' file
不工作。
我尝试过的另一种选择不是模式“2.”,而是“2”,所以表达式变为:
awk -v pattern=$1 ' $3 ~ /pattern\./ { print $1,$2,$3" F F F" }' file
但它也不起作用。任何建议都非常感谢。