我有一个很大的文件,其中包含许多列和行。我想根据我要替换的所有字符串共有的子字符串替换第一列中的整个字符串。这是我所拥有的示例:
AAA_1765 866 HTG
AAA_1873 987 IGA
AAA_1922 413 BOK
我希望第一列中包含子字符串AAA_1的所有字符串都完全替换为另一个字符串,这样看起来像这样:
BBB_2 866 HTG
BBB_2 987 IGA
BBB_2 413 BOK
我一直在与sed合作进行搜索/替换:
sed 's/^AAA_1*/BBB_2/' infile.txt >outfile.txt
sed 's/^AAA_1.*/BBB_2/' infile.txt >outfile.txt
但是第一次使用仅将子字符串AAA_1替换为BBB_2,并保留其余字符串(我希望将整个字符串替换为BBB_2),第二次使用将整个行替换为BBB_2(我只希望字符串在第一栏中替换)。
也许我需要awk?任何建议都会有所帮助。
答案 0 :(得分:0)
您可以使用{p>匹配AAA_1
之后的任何0+数字
sed 's/^AAA_1[0-9]*/BBB_2/' infile.txt > outfile.txt
请参见online sed
demo。
此正则表达式匹配
^
-行首
-AAA_1
-文字子字符串[0-9]*
-零个或多个数字(如果要表示非空格,则可以将其替换为[^ ]*
)答案 1 :(得分:0)
一个简单的awk解决方案:
private Dictionary<string, Function> ops = new Dictionary<string, Function> {
{"foo", int (int a, int b) { return a + b } }
};
awk '/^AAA_1/ { $1 = "BBB_2" } 1' file