2013-10-29 185 views
-1

我想在Linux bash腳本的grep命令中傳遞一個變量。變量是來自Internet的文本文件,我想在其中找到一些文字。將變量傳遞給grep命令

我在我的bash嘗試下面的命令:

  1. cat "$var" | grep -Po '(?<=\d[a-zA-Z]).*\..*(?=[a-zA-Z]\d)'
  2. echo "$var" | grep -Po '(?<=\d[a-zA-Z]).*\..*(?=[a-zA-Z]\d)'
  3. grep -Po '(?<=\d[a-zA-Z]).*\..*(?=[a-zA-Z]\d)' <<< "$var"

,但我不得到正確​​的結果。 我該怎麼做?

這裏是我的bash:

#!/bin/sh  
urltext=$(curl -s https://example.com) 
string=$(grep -Po '(?<=\d[a-zA-Z]).*\..*(?=[a-zA-Z]\d)' "$urltext" | tr '.' '\n') 
cat $string 
+0

編輯你的問題,包括像'VAR = 「我的文本字符串」'或'VAR = aFileName.txt'。你明白'echo'和'cat'之間的區別嗎?祝你好運。 – shellter

+0

'var'的值是什麼,你期望'grep'如何使用它的值(即什麼是預期的輸出)? – chepner

回答

0

什麼應該被包含在變?

這是一個文件?

grep <options> <expression> "$var" 

這是一個字符串?

echo "$var"|grep <options> <expression> 
grep <options> <expression> <(echo "$var") 

注意:儘量-e的選擇,如果有幾行是$ var

+0

使用'echo'傳遞字符串仍然輸出信息到控制檯。沒有這種輸出,沒有辦法做到這一點嗎? – krb686