0

このコマンドをシェルスクリプトで実行しました-

echo grep datadir /etc/my.cnf

これは私が得た出力です-

datadir=/var/lib/mysql

出力を取得するにはどうすればよいですか-

/var/lib/mysql
4

4 に答える 4

2

どうですか:

[cnicutar@fresh ~]$ echo $str
datadir=/var/lib/mysql
[cnicutar@fresh ~]$ echo ${str#*=}
/var/lib/mysql

これらの操作の詳細については、ABSをご覧ください。

于 2012-12-08T10:49:04.667 に答える
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
于 2012-12-08T10:54:49.780 に答える
1

cut-d オプションで使用

grep datadir /etc/my.cnf | cut -d = -f 2
于 2012-12-08T10:50:31.503 に答える
0

パイプを通すと、「先頭を何もsed 's/^datadir=//'置き換えない」という意味になります。datadir=

于 2012-12-08T10:50:39.193 に答える