我只想獲得字串 new-profile-input 的一部分,我需要的部分是:沒有“-input”的“new-profile”。
我試過這樣:
cat automatization_test.sh | grep -oh "\new-profile-input\w*" | grep -o "\-input\w*"
但是,我得到輸出:
-輸入
但是,我需要字串的第一部分而不是最后一部分。請注意“新組態檔”總是會改變,所以這就是為什么我必須專注于洗掉“-input”而不是只獲取“新組態檔”。
先感謝您,
uj5u.com熱心網友回復:
使用sed,您可以排除示例字串中最后一個-斜杠之后的所有內容-input。
$ sed 's/\(.*\)-.*/\1/' automatization_test.sh
new-profile
uj5u.com熱心網友回復:
如果支持,您可以使用-P與 Perl 兼容的正則運算式和正向前瞻來斷言-profile正確并匹配單詞字符,其間可能有連字符。
請注意,除了使用 cat,您還可以在 grep 命令的末尾添加檔案。
grep -oP '\w (?:-\w )*(?=-input\b)' automatization_test.sh
查看匹配的正則運算式演示。
或者對于更廣泛的匹配,在左側和右側斷言空白邊界并匹配非空白字符:
grep -oP '(?<!\S)\S (?=-input(?!\S))' automatization_test.sh
查看匹配的正則運算式演示。
或者作為gnu-awk與模式和捕獲組一起使用的替代方法:
awk 'match($0, /(\w (-\w )*)-input\>/, a) {print a[1]}' automatization_test.sh
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/362723.html
上一篇:如何讓我的函式承認拼寫錯誤?
下一篇:文本為“空”
