我在使用shell腳本中的grep命令時遇到問題。其實我有一個文件(PCF_STARHUB_20130625_1),其中包含以下記錄。grep命令不是搜索完整模式
SH_5.55916.00.00.100029_20130601_0001_NUC.csv.gz|438|3556691115
SH_5.55916.00.00.100029_20130601_0001_Summary.csv.gz|275|3919504621
SH_5.55916.00.00.100029_20130601_0001_UI.csv.gz|226|593316831
SH_5.55916.00.00.100029_20130601_0001_US.csv.gz|349|1700116234
SH_5.55916.00.00.100038_20130601_0001_NUC.csv.gz|368|3553014997
SH_5.55916.00.00.100038_20130601_0001_Summary.csv.gz|276|2625719449
SH_5.55916.00.00.100038_20130601_0001_UI.csv.gz|226|3825232121
SH_5.55916.00.00.100038_20130601_0001_US.csv.gz|199|2099616349
SH_5.75470.00.00.100015_20130601_0001_NUC.csv.gz|425|1627227450
而且我有存儲在一個變量(INPUT_FILE_T)的模式,並希望從文件(PCF_STARHUB_20130625_1)搜索模式。對於我已經使用以下命令
INPUT_FILE_T="SH?*???????????????US.*"
grep ${INPUT_FILE_T} PCF_STARHUB_20130625_1
上述命令的輸出來瞭如下
PCF_STARHUB_20130625_1:SH_5.55916.00.00.100029_20130601_0001_US.csv.gz|349|1700116234
我在輸出的兩個問題,第一個是,只有一個條目是表示在輸出端(它應該包含兩個條目),第二個問題是,輸出包含「PCF_STARHUB_20130625_1:」不應該出現。輸出應該像下面那樣
SH_5.55916.00.00.100029_20130601_0001_US.csv.gz|349|1700116234
SH_5.55916.00.00.100038_20130601_0001_US.csv.gz|199|2099616349
除了grep請問有什麼技術請告訴我。
請幫我解決這個問題。
感謝rectummelancolique您的答覆...但我不能改變搜索模式(不能使用'SH。* US \。*'而不是'SH?* ?????????????? US。*'),因爲它已經在數據庫。 – vishal
在grep regexp中,'''不代表'任何東西'(至少根據我的'man grep'),這意味着'前面的項目是可選的,最多隻匹配一次'。看來你的模式是一個「glob」模式而不是正則表達式。所以你必須改變它才能使用grep。 – rectummelancolique
如果?在grep表達式中沒有任何意思,那麼它爲什麼搜索一個模式,它不會搜索任何模式。 – vishal