2013-07-02 189 views
0

我該如何獲得這個工作?Grep變量模式匹配

#!/bin/bash 
SOMETHING=$(egrep '^ something' /some/dir/file.conf | awk -F '.' '{print $1}' | awk '{print $2}') 

if [ $SOMETHING = 123 ]; then 
    echo "Found 123" 
    else 
    echo "Cannot find 123" && exit 1 
fi 

結果grep抱怨語法錯誤。它不喜歡'^東西'

+1

你想要它匹配什麼? – Yossarian

+1

請用實例編輯你的問題。 'grep | awk | cut'不應該是最好的選擇。 – Kent

+0

mv'SOMETHING = $(egrep'^ something'somefile.conf | awk'{print $ 4}'| cut -c1-3)',然後在測試中加入'$ SOMETHING'。 – demure

回答

2

你可以簡單地用awk替換你的多個帶有管道的命令。使用下面的腳本:

SOMETHING=$(awk '/^ something/{print substr($4, 1, 3);}' somefile.conf) 
if [ "$SOMETHING" = "123" ]; then 
    echo "Found 123" 
else 
    echo "Cannot find 123" && exit 1 
fi 

編輯:看起來你編輯的問題,你的劇本我張貼了我的雁後。這裏是你修改後的awk命令最新編輯(不要再次這樣做):

SOMETHING=$(awk -F "." '/^ something/{split($1, a, " "); print a[2]}' somefile.conf)