我在外殼腳本 -在shell腳本刪除某些字符
echo grep datadir /etc/my.cnf
運行此命令,這是輸出I GOT-
datadir=/var/lib/mysql
我應該怎麼做才能AS-
輸出/var/lib/mysql
我在外殼腳本 -在shell腳本刪除某些字符
echo grep datadir /etc/my.cnf
運行此命令,這是輸出I GOT-
datadir=/var/lib/mysql
我應該怎麼做才能AS-
輸出/var/lib/mysql
如何:
[[email protected] ~]$ echo $str
datadir=/var/lib/mysql
[[email protected] ~]$ echo ${str#*=}
/var/lib/mysql
在ABS處詳細瞭解這些操作。
使用cut
-d選項
grep datadir /etc/my.cnf | cut -d = -f 2
它管道sed 's/^datadir=//'
這意味着 「更換領導datadir=
什麼也沒有」。
或者更好,但只使用'sed -n's/^ datadir = // p'/etc/my.cnf'而不使用'grep'或'echo'。 – tripleee
管的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
輸出與您發佈的命令不匹配。無論是'echo'都是錯誤的,或者你省略了一個(無用的)反引號。 – tripleee