我遇到了一些我自己無法解決的奇怪問題。我有兩個文件,內容如下:Shell腳本 - 無法使用grep在文件中找到字符串
FILE1.TXT
Butterscotch;lkt+4S7Yhzf/g
Sox;WrWMzN6HD
Table;K4yPIK+SFfTFs
tram;YaY3opP9ie
number;e/WwiF5aihUY
Buttler;Nsadlkt+4S7Yhz
wzahwahwah;PYaY3opP9ieH
FILE2.TXT
Butterscotch;lkt+4S7Yhzf/g
Sox;WrWMzN6HD
Table;K4yPIK+SFfTFs
tram;YaY3opP9ie
number;e/WwiF5aihUY
我需要找到這兩個文件,但之間的差異只對於分號前的條目,所以我首先使用awk
來獲得這些條目:
awk 'BEGIN {FS=";"}; {print $1}' File1.txt > Output1.txt
awk 'BEGIN {FS=";"}; {print $1}' File2.txt > Output2.txt
新文件包含的條目如下:
Output1.txt
Butterscotch
Sox
Table
tram
number
Buttler
wzahwahwah
Output2.txt
Butterscotch
Sox
Table
tram
number
然後我用grep -Fxvf Output2.txt Output1.txt > Diff.txt
打印出來之間的差異Output2.txt和Output1.txt,所以我的文件看起來像這樣:
Diff.txt
Buttler
wzahwahwah
現在棘手的問題。我需要找到並打印出File1.txt的另一個文件整行,其起始條目從Diff.txt。我聲明瞭一個變量,做這樣的事情:
variable=$(cat Diff.txt)
grep $variable Output1.txt > Delete.txt
所以在這個例子中,我應該得到的東西是這樣的:
Delete.txt
Buttler;Nsadlkt+4S7Yhz
wzahwahwah;PYaY3opP9ieH
但不幸的是,我得到一個錯誤:
grep: wzahwahwah: No such file or directory
文件Delete.txt,而不是期望的數據包含:
/home/working/File1.txt:Buttler;Nsadlkt+4S7Yhz
所以這遠不是我需要得到。我已經注意到的是,當我從FILE1.TXT
wzahwahwah;PYaY3opP9ieH
刪除我沒有得到任何錯誤,我需要的文件看起來像:
Buttler;Nsadlkt+4S7Yhz
爲什麼這是行不通的任何想法?
很棒!謝謝。任何想法,爲什麼我的grep沒有工作? – NRG 2014-10-17 07:52:29
我相信問題是讀取變量中的文件內容,然後使用該變量未加引號。 – anubhava 2014-10-17 08:01:49
現在唯一困擾我的是爲什麼'grep'爲其他條目工作,但對wzahwahwah不起作用; PYaY3opP9ieH。儘管如此,再次 - 謝謝。 – NRG 2014-10-17 08:12:43