Shell-Script
條件抓取
我有一個配置文件,其內容如下所示:
Jobname|Type|Silo|Description #comment1 #comment2 job1|me|silo1|test_job1 job1|me|silo1|test_job2 job1|prod|silo1|test_job3
現在我需要文件的條件內容,比如 TYPE =me 的內容。為此,我正在使用 grep:
job_detail=$((cat config_file | grep me | awk '{print $4}'))
在這種情況下,我也得到了第一行,因為 JOBNAME 得到了匹配的字元。我用 -v 選項轉義了評論。我無法評論配置文件的第一行,因為它被其他未知程序使用。
有沒有辦法我可以 grep 整個單詞匹配?如果有辦法用特定字元作為條件來 grep 整個單詞會更好。
一種用“|”分隔線的方法 然後grep?
嘗試
awk -F\| -v select="$var" '$2 == select { print $4;}' config_file
在哪裡
$var
包含您要選擇的欄位- -F| 告訴 awk 使用 | 作為分隔符,| (pipr) 必須被轉義。
- -v 選擇=“ $ var" transfer $ var 到 awk 變數(選擇)
$2 == select
選擇第二個參數為“$var”的行或選擇。{ print $4;}
列印第四個欄位。
man grep
將向您展示-w
標誌:-w, --word-regexp Select only those lines containing matches that form whole words. The test is that the matching substring must either be at the beginning of the line, or preceded by a non-word constituent character. Similarly, it must be either at the end of the line or followed by a non-word constituent character. Word-constituent characters are letters, digits, and the underscore.
或者,
| egrep -v Jobname
儘早堅持您的管道。