2016-01-07 26 views
-1

我必須用以下方法在ksh腳本中使用grep命令。 我有一個殼可變$string這將有每次隨機串參數,我想使用正則表達式來發現它部分匹配「*」在shell變量中使用通配符字符的grep

我曾嘗試:

  1. grep "$string" file.txt =>不取部分
  2. grep "$string*" file.txt =>它給出結果0或多次出現在字符串
  3. 現在我想用grep "*$string*" file.txt ..我已經逃脫它"\*$string*""*\$string*"沒有幫助我的終點?

如何使用grep "*$string*" file.txt?還是其他命令?

我輸入$string="AAA"和輸出應符合

  1. AAA,或
  2. <any number of characters>AAA<any number of characters>

如果AAA是隨處可見它應該匹配..generally grep的將這樣做,但它的不在這裏提取。

+1

您應該[編輯]您的問題向我們展示您的輸入樣本,'$ string'變量和預期輸出。 –

+0

我已添加備註 – user1990571

+0

如果您的字符串是'AAA',那麼'grep「$ string」file.txt'應該返回所有包含'AAA'的行。您應該也可以使用'-F'開關來匹配固定的字符串,但它應該沒有。向我們展示一些輸入和期望的輸出,以便我們可以重現問題。 –

回答

1

雖然從您的問題不清楚,但我懷疑您正在尋找固定字符串的-F標誌。這確保沒有正則表達式元字符。

+0

筆記: 我有$ string =「AAA」的輸入,輸出應該匹配1.AAA或2.AAA 如果AAA找到它應該匹配的任何地方..通常grep會這樣做,但它不會抓取這裏 – user1990571

1

要搜索的字符串,最好使用fgrep一樣或等效的grep -F

-F,--fixed串 解釋圖案作爲固定的字符串的列表,由換行分隔,其中的任何一個是匹配。

下面的例子應該與文件「$字符串」的所有發生。

fgrep "$string" file.txt