0
嘗試使用來自一個文件的模式grep並在大的文件上使用它們,然後將結果保存到內部具有模式名稱和grep輸出的文件不起作用,創建空文件。grep模式並保存到具有模式名稱的文件
我做錯了什麼?
while read p; do
grep $p big.txt >>$p
done < patterns.txt
嘗試使用來自一個文件的模式grep並在大的文件上使用它們,然後將結果保存到內部具有模式名稱和grep輸出的文件不起作用,創建空文件。grep模式並保存到具有模式名稱的文件
我做錯了什麼?
while read p; do
grep $p big.txt >>$p
done < patterns.txt
正如評論所指出的,你最好引用變量,使其在patterns.txt
文件奇怪的字符將作爲文本進行處理:
while IFS= read -r p; do
grep "$p" big.txt >> "$p"
done < patterns.txt
對IFS=
和read -r
的說明,請參見Read a file line by line assigning the value to a variable。
什麼是'patterns.txt'文件?如果它包含帶空格的名稱,則可能有問題。 – fedorqui
'-f'選項從文件中讀取模式:'grep -f patterns.txt big.txt >> output'但是如果你需要一個不同的文件foreach模式,那麼你給了自己一個解決方案,除了你必須小心閱讀模式包含的內容(斜線,空格,...)。那麼,如果一個模式不匹配,當然你會有empy文件。試試'-c'選項來計算匹配次數;如果文件包含「0」(匹配),則表示您的模式不匹配輸入的任何行。 – ShinTakezou
模式文件包含簡單的單詞列表,二級域名,不含斜槓點空格等,單詞,帶連字符的單詞。使用-f標記空文件。 – user1983793