grep查詢文本:問一個簡單shell問題,將grep的輸出賦值給一個變量


問一個簡單shell問題,將grep的輸出賦值給一個變量

用grep命令得到的輸出賦值給一個變量不成功。

grep命令如下:
代碼:
$ grep -c '^abc' file.txt
輸出為22,表示file.txt中以abc開頭的行的數目。

現在將輸出賦值給一個變量:
代碼:
myvar=`grep -c '^abc' file.txt`
得到的$myvar值為0,貌似是將命令的返回狀態值付給了變量,而不是命令的輸出內容。
但是用myvar=`pwd`是沒有問題的,輸出付給了變量。是不是grep命令有特別注意的地方?謝謝。
 
昵稱: michaelyung  時間: 2009-06-26 16:32:00
好象沒有問題:
(a=`grep -c ' mysql' /dev/shm/l`; echo $a)
21
 
昵稱: openfree  時間: 2009-06-26 20:39:00
引用:
作者: openfree
好象沒有問題:
(a=`grep -c ' mysql' /dev/shm/l`; echo $a)
21
剛試了一下,直接匹配沒有問題。
用了正則表達的時候就會有這問題,比如
加了-E選項也一樣,$a輸出為0.

附上我的例子,有一個tex文件,內含有:
代碼:
..... \bibitem .....
用以下的命令:
代碼:
$ a=`grep -c '^\\bibitem' file.tex`; echo $a
輸出為0。
直接執行 grep -c '^\\bibitem' file.tex 輸出為正常值。
可能是正則表達和轉義哪塊有問題。
謝謝。
 
昵稱: michaelyung  時間: 2009-06-27 01:41:00

知道問題在哪了。賦值時,正則表達里的轉義符兩個backslash都需要轉義。所以應該是:

代碼:
a=`grep -c '^\\\\bibitem' paper.tex`;echo $a

愚蠢的錯誤。
多謝大家。

引用:
作者: michaelyung
剛試了一下,直接匹配沒有問題。
用了正則表達的時候就會有這問題,比如
加了-E選項也一樣,$a輸出為0.

附上我的例子,有一個tex文件,內含有:
代碼:
..... \bibitem .....
用以下的命令:
代碼:
$ a=`grep -c '^\\bibitem' file.tex`; echo $a
輸出為0。
直接執行 grep -c '^\\bibitem' file.tex 輸出為正常值。
可能是正則表達和轉義哪塊有問題。
謝謝。
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM