2012-12-08 154 views
0

我在外殼腳本 -在shell腳本刪除某些字符

echo grep datadir /etc/my.cnf 

運行此命令,這是輸出I GOT-

datadir=/var/lib/mysql 

我應該怎麼做才能AS-

輸出
/var/lib/mysql 
+0

輸出與您發佈的命令不匹配。無論是'echo'都是錯誤的,或者你省略了一個(無用的)反引號。 – tripleee

回答

1

使用cut -d選項

grep datadir /etc/my.cnf | cut -d = -f 2 
0

它管道sed 's/^datadir=//'這意味着 「更換領導datadir=什麼也沒有」。

+3

或者更好,但只使用'sed -n's/^ datadir = // p'/etc/my.cnf'而不使用'grep'或'echo'。 – tripleee

2

管的grep已切斷輸出:

$ echo 'datadir=/var/lib/mysql' | cut -d '=' -f 2 
/var/lib/mysql 

你可能有問題,如果你的文件有空間運行,但(注意,輸出縮進):

$ echo 'datadir = /var/lib/mysql' | cut -d '=' -f 2 
    /var/lib/mysql 

你可以使用awk來規避這種情況:

$ echo 'datadir = /var/lib/mysql' | awk -F '[[:space:]]*=[[:space:]]*' '{print $2}' 
/var/lib/mysql