使用sed命令提取模式
我有一根这样的绳子使用sed命令提取模式,sed,Sed,我有一根这样的绳子 "112344 1234234 guest 25 % allocation used" 我想使用sed从这个字符串中提取25 在给定的行“112344 1234234使用了25%的客户分配”中,我只对“25%”感兴趣。第一个字段也可以为空,如下所示: “使用了25%的分配” 但“%allocation used”是固定字符串。 所以正则表达式应该基于这个固定模式 有人能帮我一下吗。基本上,你想要的是右边第四个字段。要得到这个,我将使用awk: awk '{ print $
"112344 1234234 guest 25 % allocation used"
我想使用sed从这个字符串中提取25
在给定的行“112344 1234234使用了25%的客户分配”中,我只对“25%”感兴趣。第一个字段也可以为空,如下所示:
“使用了25%的分配”
但“%allocation used”是固定字符串。
所以正则表达式应该基于这个固定模式
有人能帮我一下吗。基本上,你想要的是右边第四个字段。要得到这个,我将使用
awk
:
awk '{ print $(NF-3) }'
如果它绝对必须在sed
中,请尝试以下操作:
sed -e 's/^/ /' -e 's/\(^|.* \)\(.*\) % allocation used/\1/'
基本上,您需要右起第四个字段。要得到这个,我将使用
awk
:
awk '{ print $(NF-3) }'
如果它绝对必须在sed
中,请尝试以下操作:
sed -e 's/^/ /' -e 's/\(^|.* \)\(.*\) % allocation used/\1/'
试试这个
cut -d% -f1 | awk '{ print $(NF) }'
试试这个
cut -d% -f1 | awk '{ print $(NF) }'
如果您确定“%”前面的数字为2位,则可以使用以下数字
[jaypal~/Temp]$ cat text5
112344 1234234 guest 25 % allocation used
25 % allocation used
2344 guest 15 % allocation used
[jaypal~/Temp]$ sed 's/.*\(.. %\).*/\1/' text5
25 %
25 %
15 %
如果您确定“%”前面的数字为2位,则可以使用以下数字
[jaypal~/Temp]$ cat text5
112344 1234234 guest 25 % allocation used
25 % allocation used
2344 guest 15 % allocation used
[jaypal~/Temp]$ sed 's/.*\(.. %\).*/\1/' text5
25 %
25 %
15 %
很难找到只基于单个样本输入提取内容的正则表达式模式。哪些部分不同?以什么方式?(当然,这首先是编写正则表达式的本质。)这是非常不具体的。你总是想要第四个字段?前两位数字?请澄清您是要提取
25
还是25%
。很难根据单个样本输入来提取正则表达式模式。哪些部分不同?以什么方式?(当然,这首先是编写正则表达式的本质。)这是非常不具体的。你总是想要第四个字段?前两位数字?请澄清是要提取25
还是25%
。它不是提取25%。而是打印整行。@Fayaz我用了\@Fayaz你可能想更新你的问题。它声明我想用sed从这个字符串中提取25个。
如果你也需要“%”-sed-e的/*\@Jaypal谢谢,我错过了这个歧义。在给Fayaz一个澄清的机会后,我会修改我的答案。顺便说一句,你的不太正确-它只打印%
@MichaelJ.Barber。如果前几个字段为空,并且字符串以25%分配使用开始,我认为更新的解决方案不起作用
它没有提取25%。而是打印整行。@Fayaz我用了\@Fayaz你可能想更新你的问题。它声明我想用sed从这个字符串中提取25个。
如果你也需要“%”-sed-e的/*\@Jaypal谢谢,我错过了这个歧义。在给Fayaz一个澄清的机会后,我会修改我的答案。顺便说一句,你的不太正确-它只打印%
@MichaelJ.Barber。如果前几个字段是空的,并且字符串以25%分配使用开始,我认为更新的解决方案不起作用