Linux 如何使用sed查找替换大于100的数字?

Linux 如何使用sed查找替换大于100的数字?,linux,bash,awk,sed,scripting,Linux,Bash,Awk,Sed,Scripting,如何使用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, 100 Mon Sep 14 12:50:04 IST 2015, 100 预期产出: Mon Sep 14 12:48:04 IST 2015, 1 Mon Sep 14

如何使用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, 100
Mon Sep 14 12:50:04 IST 2015, 100
预期产出:

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, 1
Mon Sep 14 12:50:04 IST 2015, 110
Mon Sep 14 12:48:04 IST 2015, 100
Mon Sep 14 12:50:04 IST 2015, 100
但是你可以看到第7列的数字“1”被“100”替换了。如何做到这一点

提前谢谢

awk '$7>100{$7=100}7' file
sed不太适合进行匹配计算/比较,请改用awk

[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
sed不太适合进行匹配计算/比较,请改用awk

[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
  • 假定
    • 所有行都在范围内(如果需要,在第一个操作中添加过滤器选项很容易)
    • 最后一个数字后没有空格(如果需要添加图案很容易)
    • posix兼容
  • 假定
    • 所有行都在范围内(如果需要,在第一个操作中添加过滤器选项很容易)
    • 最后一个数字后没有空格(如果需要添加图案很容易)
    • posix兼容
这可能适合您(GNU-sed):

由于最后一个字段仅包含一个整数,因此任何具有3位或更多位数的数字都可以替换为
100

这可能适用于您(GNU-sed):


由于最后一个字段仅包含一个整数,任何具有3位或更多位数的数字都可以替换为
100

,但是sed可以使用“-i”选项替换原始文件上的值。请告诉我如何使用awk.do
awk'…'文件>tmp和mv tmp文件执行此操作(只有在sed:-)中才能执行此操作@Kent为什么结尾的
7
不是
1
$7
?@NeronLeVelu
$7
不正确,这里我们需要一个非零的非空常量<代码>$7
可能为零/空,然后我们错过了那一行。关于
1
7
,我个人觉得用右手食指打字比用左手小指更容易。。。因此,我通常键入
7
,但其含义与
1
相同。但是sed可以使用“-I”选项替换原始文件上的值。请告诉我如何使用awk.do
awk'…'文件>tmp和mv tmp文件执行此操作(只有在sed:-)中才能执行此操作@Kent为什么结尾的
7
不是
1
$7
?@NeronLeVelu
$7
不正确,这里我们需要一个非零的非空常量<代码>$7
可能为零/空,然后我们错过了那一行。关于
1
7
,我个人觉得用右手食指打字比用左手小指更容易。。。因此,我通常键入
7
,但其含义与
1
相同。我不想对您的答案发表评论,但请小心,您正在与
root
用户玩游戏。这与大多数以大于199的数字结尾的行不匹配。此外,它将替换以10到19结尾的行。请使用更多信息进行编辑。“仅编码”和“尝试此项”答案是错误的,因为它们不包含可搜索的内容,并且不解释为什么有人应该“尝试此项”。我不想对您的答案发表评论,但请小心,您正在与root用户玩游戏。这与大多数以大于199的数字结尾的行不匹配。此外,它将替换以10到19结尾的行。请使用更多信息进行编辑。“仅编码”和“尝试此”答案是错误的,因为它们不包含可搜索的内容,并且没有解释为什么有人应该“尝试此”。