[英]Grep and search for parameters with bash script
我正在嘗試制作一個 bash 腳本來搜索多個文本文件中的單詞; 有 4 個參數,但腳本只有在我搜索所有這些參數時才有效,如果我只搜索一個或多個參數(例如 word3 和 word4),則腳本無效。 Word2 是一個我不知道也不關心的可變長度的數字; 我嘗試添加通配符 * 但它給了我一個錯誤。
鑒於 word2 未知,我如何修改腳本以便可以搜索一個、兩個更多或所有參數?
#!/bin/bash
read -p "word3: " word3
read -p "word4: " word4
read -p "word1: " word1
read -p "word2: " word2
printf "Searching for ${word1}:${word2}:${word3}:${word4} $(find path/to/file -name '*.txt')"
grep -i -w "${word1}:${word2}:${word3}:${word4}" $(find path/to/file -name '*.txt') | cut -d":" -f2-
Output 示例為:
word1:numbervariablelenght:word3:word4
編輯1:
*sample input
bash script.sh
word3: wordThree
word4: wordFour
word1: wordOne
word2: don't know
Searching for word1:word2:word3:word4
sample output
WordOne:somenumber:wordThree:wordFour*
您可以使用 egrep 找到多種模式:
egrep -i -w "${word1}|${word2}|${word3}|${word4}" $(find path/to/file -name '*.txt')
讓我給你一個通用的方法:
在文件中查找word1
AND word2
:
grep "word1" file | grep "word2"
在文件中查找word1
或word2
:
grep -E "word1|word2" file.
讓我們做一個練習:
在文件中查找word1
AND ( word2
OR word3
):
grep "word1" file | grep -E "word2|word3"
如您所見,使用 pipe 可以實現AND
。 OR
可以使用擴展的 grep ( grep -E
,有時縮寫為egrep
)來實現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.