H!所以我試圖運行一個尋找字串模式的腳本。
例如,我想從一個檔案中找到 2 個單詞,分別位于
“我喜歡吐司,吐司棒極了。面包還只是烤之前的吐司。”
我想使用這樣的命令從命令列呼叫它:
./myscript.sh myfile.txt "toast bread"
到目前為止我的代碼:
text_file=$1
keyword_first=$2
keyword_second=$3
find_keyword=$(cat $text_file | grep -w "$keyword_first""$keyword_second" )
echo $find_keyword
我嘗試了幾種不同的方法。直接從命令列我可以讓它運行使用:
cat myfile.txt | grep -E 'toast|bread'
我正在嘗試將用戶輸入放入變數中并使用變數來 grep 檔案
uj5u.com熱心網友回復:
你似乎只是在尋找
grep -E "$2|$3" "$1"
命令列上的作業也可以在腳本中作業,盡管您需要切換到雙引號以使 shell 替換引號內的變數。
在這種情況下,該-E選項也可以替換為多個-e選項。
grep -e "$2" -e "$3" "$1"
uj5u.com熱心網友回復:
您可以通過管道兩次 grep:
find_keyword=$(cat $text_file | grep -w "$keyword_first" | grep -w "$keyword_second")
請注意,未找到您的搜索詞“面包”,因為該字串包含大寫的“面包”。如果你想不管這個找到單詞,你應該使用 grep 的不區分大小寫選項-i:
find_keyword=$(cat $text_file | grep -w -i "$keyword_first" | grep -w -i "$keyword_second")
在完整的腳本中:
#!/bin/bash
#
# usage: ./myscript.sh myfile.txt "toast" "bread"
text_file=$1
keyword_first=$2
keyword_second=$3
find_keyword=$(cat $text_file | grep -w -i "$keyword_first" | grep -w -i "$keyword_second")
echo $find_keyword
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/451495.html
標籤:重击
上一篇:在getopt中處理glob
下一篇:拆分組態檔中的文本
