获取字符串第 n 次出现之前的所有内容

  • 本文关键字:字符串 获取 bash
  • 更新时间 :
  • 英文 :


我有一个文件,其中包含类似于下面的一行:

call mvn liquibase:updateSQL -P profileName -Dusername=username -Dpassword=password -Dvarchar=nvarchar -Dnumber=numeric -Dchar=nchar -Ddate=datetime

我想做的是提取profileName,我该如何提取"-P"之后的所有内容,然后提取第 n 次出现"-D"之前的所有内容?

我将在不同的文件上运行它,并且配置文件名称可能与上面的位置不同。

我希望得到的预期输出是:profileName

谢谢!

告诉我这是否会按预期完成工作:

grep -oP '(?<=-P )w+(?= )' file_to_parse

这种模式说你想要在"-P"之后和"之前"的单词

使用 awk:

$ awk 'BEGIN{RS=" "} /^-D/{c++} f&&c<1{b=b $0 OFS} /^-P/{f=1} END{print b}' file
profileName

f&&c<1{b=b $0 OFS}中的c<n控制所需的-D量。

最新更新