如何使用sed使用外卡?我想搜索并替换大于100的“第7列”,将其替换为“100”
输入: -
$ cat /tmp/test.in
Mon Sep 14 12:48:04 IST 2015, 1
Mon Sep 14 12:50:04 IST 2015, 110
预期产出:
Mon Sep 14 12:48:04 IST 2015, 1
Mon Sep 14 12:50:04 IST 2015, 100
$ sed -i's /,\ 1。* /,100 / g'/ tmp / test.in
Mon Sep 14 12:48:04 IST 2015, 100
Mon Sep 14 12:50:04 IST 2015, 100
但你可以看到数字“1”在第7列被“100”替换的时间。如何实现这个目标?
提前致谢
答案 0 :(得分:3)
awk '$7>100{$7=100}7' file
sed不是很好做匹配计算/比较,而是使用awk。
答案 1 :(得分:1)
sed -e '/,[[:blank:]]*[1-9]\{1,2\}$/b' -e '/,[[:blank:]]*100$/b' -e 's/,[^,]*$/, 100/' YourFile
答案 2 :(得分:0)
[root@test /tmp]$ sed 's/,\ 1..*/, 100/g' a
Mon Sep 14 12:48:04 IST 2015, 1
Mon Sep 14 12:50:04 IST 2015, 100
答案 3 :(得分:0)
这可能适合你(GNU sed):
sed -r 's/ \S\S\S+$/ 100/' file
由于最后一个字段只包含一个整数,因此任何带有3位或更多位数的数字都可以替换为100
。