簡體   English   中英

Grep 並使用 bash 腳本搜索參數

[英]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"

在文件中查找word1word2

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM