Bash
從bash中的文本文件中提取文本
我有一個大文本文件,全是一行。文本中有幾個看起來像的部分,
foo=12345
我需要將它們全部提取為單獨的行,忽略文件的其餘部分。例如:
random junk foo=12345 more junk random junk foo=2345 junk foo=7654 junk random foo=5432 junk
我想出去的是:
12345 2345 7654 5432
我知道如何編寫正則表達式來提取 .
foo=([0-9]+)
,但我不確定如何將其應用於文本並在 bash 中取出行。
$> echo "random junk foo=12345 more junk random junk foo=2345 junk foo=7654 junk random foo=5432 junk" | grep --only-matching --perl-regexp "(?<=foo=)[0-9]+" 12345 2345 7654 5432
我們在這裡所做的是在
"(?<=foo=)[0-9]+"
.
我會用來
awk
將長行解析為記錄。awk 'BEGIN{FS="=";RS=" "}/^foo=/{print $2}'
這將每個“單詞”設置為單獨的記錄,並在該單詞中使用“=”分隔欄位。然後在左側為“foo”時輸出’=‘的右側。需要使用正則表達式代替,
$1=="foo"
因為如果沒有’=’,則第一個欄位與整個記錄相同。