如何 grep 查找字母後面跟著空格和標點符號?

如何 grep 查找字母後面跟著空格和標點符號?

我有一條線叫

10909101 - testingName - Log8767, File787 - 8:50PM  

現在我只想使用 grep 來取得testingName我的輸出。

第一個數字的位數可能會有所不同(另一行可能會將12其本身作為第一個數字),因此我無法使用任何基於數字的 grep。那我該如何解決這個問題呢?

答案1

鑑於所有數據的格式都相同,grep因此這是錯誤的工具。當然,它是可用的,但使用它是一件麻煩事——這不是grep設計的目的,更好的工具是awk

由於您的分隔符號始終是“空格,破折號,空格”序列,即-,您可以這樣做:

$ awk -F' - ' '{print $2}' <filename>

其中<filename>是包含您正在搜尋的資料的檔案的名稱,您將獲得整個檔案中的所有行,這些行被修剪為僅第二個條目。如果您不喜歡使用三個字元分隔符,您可以這樣做:

$ awk -F- '{print $2}' | tr -d ' '

它只是抓取從第一個-到第二個的所有內容,包括空格,並透過 刪除空格tr。當然,如果您的檔案名稱中有空格,這會導致問題,您將需要堅持第一個範例。

答案2

這使用的實例grep,但它純的grep

echo '10909101 - testingName - Log8767, File787 - 8:50PM  ' | \
grep -o '\- [[:alpha:]]* \-' | grep -o '[[:alpha:]]*'

輸出:

testingName

相關內容