在bash中,我有一个字符串,想获取包含某个子字符串的部分(分隔符为空格字符)。就像我有
LIST="some string with a substring you want to match"
而我的子字符串是“ ubst”。我想返回字符串“ substring”。(如果有多个匹配项,则应返回匹配的第一个子字符串。)
字符串的一部分是编译器标志。因此,它们可以包含特殊字符(但不能包含空格)。
使用awk,您可以执行以下操作:
str="some string with a substring you want to match"
awk -v s='ubst' -v RS=' ' '$0 ~ s' <<< "$str"
substring
-v RS=' '
会将记录分隔符设置为空格,从而将每个空格分隔的单词分解为单个记录。 $0 ~ s
当单词与您给定的搜索词匹配时将返回单词PS:如果只想打印第一个匹配项,请使用:
awk -v s='ubst' -v RS=' ' '$0 ~ s{print; exit}' <<< "$str"
如果只是想进行单个grep,则仅用于学术练习,然后使用此PCRE正则表达式:
grep -oP '^(?:(?!\w*ubst).)*\K\w*ubst\w*' <<< "$str"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句