このコマンドをシェルスクリプトで実行しました-
echo grep datadir /etc/my.cnf
これは私が得た出力です-
datadir=/var/lib/mysql
出力を取得するにはどうすればよいですか-
/var/lib/mysql
どうですか:
[cnicutar@fresh ~]$ echo $str
datadir=/var/lib/mysql
[cnicutar@fresh ~]$ echo ${str#*=}
/var/lib/mysql
これらの操作の詳細については、ABSをご覧ください。
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
cut
-d オプションで使用
grep datadir /etc/my.cnf | cut -d = -f 2
パイプを通すと、「先頭を何もsed 's/^datadir=//'
置き換えない」という意味になります。datadir=