我的文件包含与下面类似的行:
["isp_hidden_value"]=> array(9) { ["comcast"]=> string(7) "comcast" ["yahoo"]=> string(5) "yahoo" ["gmail"]=> string(5) "gmail" ["roadrunner"]=> string(10) "roadrunner" ["verizon"]=> string(7) "verizon" ["att"]=> string(3) "att" ["hotmail"]=> string(7) "hotmail" ["aol"]=> string(3) "aol" ["juno"]=> string(4) "juno" } }
我想要做的是提取call mvn liquibase:updateSQL -P profileName -Dusername=username -Dpassword=password -Dvarchar=nvarchar -Dnumber=numeric -Dchar=nchar -Ddate=datetime
,如何在' -P'之后提取所有内容,然后在第n次出现之前提取所有内容。 -D'?
我将在不同的文件上运行它,并且profileName可能与上面的文件位于不同的位置。
我希望获得的预期输出是:profileName
谢谢!
答案 0 :(得分:0)
使用awk:
$ awk 'BEGIN{RS=" "} /^-D/{c++} f&&c<1{b=b $0 OFS} /^-P/{f=1} END{print b}' file
profileName
使用-D
中的c<n
控制所需f&&c<1{b=b $0 OFS}
的数量。
答案 1 :(得分:0)
告诉我这是否能按预期完成工作:
grep -oP '(?<=-P )\w+(?= )' file_to_parse
这种模式表示你想要&#34 ;-P&#34;之前&#34; &#34;