我正在尝试从文本文件中提取参数的值。
下面是我的文本文件,其中uri_param作为参数。
application.txt
---------------
uri_param=frontier://tenant=stripe;env=qa;svc=new-service@stripe-ftr-qa.stripe.nxz.com:80
command:
--------
egrep ^uri_param application.txt | sed -e 's/.*=//'
我希望在第一个=
之后输出frontier://tenant=stripe;env=qa;svc=new-service@stripe-ftr-qa.stripe.nxz.com:80
作为输出,即new-service@stripe-ftr-qa.stripe.nxz.com:80
,但我得到的输出是=
。
我该如何解决这个问题?我到现在所发现的是。* in sed是贪婪的,它将匹配{{1}}之后的最长字符串。
答案 0 :(得分:2)
sed -n '/^uri_param=/ {s///p;q;}' YourFile
答案 1 :(得分:1)
你可以试试这种方式
sed -r s'/[^=]+.(.*)/\1/g' File_Name
答案 2 :(得分:1)
sed -r 's/^[_0-9a-zA-Z]+=//g' File_Name
答案 3 :(得分:1)
我们可以在grep
部分过滤它:
grep -o "^uri_param=.*:[0-9]\{1,\}" infile|sed -e "s/^uri_param=//"
或者使用更灵活的工具,例如gawk
:
gawk 'match($0, "^uri_param=(.*:[0-9]+)", r){print r[1]}' infile
注意:如果url
未使用端口号完成,则应调整pattern
。