Sed linux中如何用逗号替换IP地址

Sed linux中如何用逗号替换IP地址,sed,tr,Sed,Tr,我想将第二个逗号后的IP地址替换为92.2.11.1,用于所有: pr,th-klmndisj,92.2.11.1 da,th-kl532disj,92.2.11.8 fr,th-klmn4532j,92.2.21.2 pr,th-klmn52sj,92.2.11.3 pr,th klmndisj,92.2.11.1 陆军部,th-kl532disj,92.2.11.8 fr,th-klmn4532j,92.2.21.2 pr,th-klmn52sj,92.2.11.3 预期视图: pr,th-

我想将第二个逗号后的IP地址替换为92.2.11.1,用于所有:

pr,th-klmndisj,92.2.11.1 da,th-kl532disj,92.2.11.8 fr,th-klmn4532j,92.2.21.2 pr,th-klmn52sj,92.2.11.3 pr,th klmndisj,92.2.11.1 陆军部,th-kl532disj,92.2.11.8 fr,th-klmn4532j,92.2.21.2 pr,th-klmn52sj,92.2.11.3 预期视图:

pr,th-klmndisj,92.2.11.1 da,th-kl532disj,92.2.11.1 fr,th-klmn4532j,92.2.11.1 pr,th-klmn52sj,92.2.11.1 pr,th klmndisj,92.2.11.1 陆军部,th-kl532disj,92.2.11.1 fr,th-klmn4532j,92.2.11.1 pr,th-klmn52sj,92.2.11.1 你可能是指第二个逗号

说明:搜索非逗号、逗号、更多非逗号、逗号。
\(…\)
中的部分被自身替换(
\1
),行的其余部分被抛出,新字符串被打印

sed 's/,[^,]*$/,92.2.11.1/g' file
测试

kent$  echo "pr,th-klmndisj,92.2.11.1
dquote> da,th-kl532disj,92.2.11.8
dquote> fr,th-klmn4532j,92.2.21.2
dquote> pr,th-klmn52sj,92.2.11.3"|sed 's/,[^,]*$/,92.2.11.1/g'
pr,th-klmndisj,92.2.11.1
da,th-kl532disj,92.2.11.1
fr,th-klmn4532j,92.2.11.1
pr,th-klmn52sj,92.2.11.1

使用什么语言来替换IP地址?所有在Linux上可以工作的东西,对不起,我忘了把它放进去。你想评论一下你的代码吗?几行注释不会伤害并有助于解释这一行的功能,有趣的是,当我有没有数据的新行时,awk添加了这样的内容:,,92.2.11.1 pr,th-klmn52sj,92.2.11.1当我添加了没有任何内容的行时,命令添加了它自添加逗号和IPIf您的文件包含空行,试试这个:$awk-F,'NF>2{$3=“92.2.11.1”}1'OFS=,文件#NF>2只考虑超过两列的行。一件事是,如果我们有这样的东西:pr,th-klmn52sj,92.2.11.1,8.8.8命令替换在第二个逗号之后,然后也替换为单个结果92.2.11。1@KalinBorisov例如我不明白。请更新您的问题或发布一个新问题,包括您在本例中所做的示例输入和输出。pr,th-klmn52sj,92.2.11.1,8.8.8.8第二个逗号后的所有内容,即使在第三个逗号后也会被替换。@KalinBorisov:哦,我明白了。你想把东西放在第三个逗号之后。只需将搜索模式中的
替换为
[^,]
kent$  echo "pr,th-klmndisj,92.2.11.1
dquote> da,th-kl532disj,92.2.11.8
dquote> fr,th-klmn4532j,92.2.21.2
dquote> pr,th-klmn52sj,92.2.11.3"|sed 's/,[^,]*$/,92.2.11.1/g'
pr,th-klmndisj,92.2.11.1
da,th-kl532disj,92.2.11.1
fr,th-klmn4532j,92.2.11.1
pr,th-klmn52sj,92.2.11.1
awk -F, '$3="92.2.11.1"' OFS=, file