我有兩個文件,我試圖運行find/grep/fgrep。我一直在嘗試幾個不同的命令,試圖得到如下結果:從文件b中找出文件a中的單詞,並從文件a輸出丟失的單詞匹配
文件
hostnamea
hostnameb
hostnamec
hostnamed
hostnamee
hostnamef
文件B
hostnamea-20170802
hostnameb-20170802
hostnamec-20170802.xml # some files have extensions
020214-_hostnamed-20170208.tar # some files have different extensions and have different date structure
HOSTNAMEF-20170802
*有關文件 - 日期= 20170802 - 大多數都有這樣的日期格式 - 一些有不同的日期格式*
FileA是我的控制文件 - 我想搜索整個單詞hostnamea-f
和匹配hostnamea-f
在fileb中,並將來自filea
的不匹配項輸出到終端上的輸出中,以便在shell腳本中使用。
對於這個例子,我做到了hostnamee
不在fileb中。我想運行一個fgrep/grep/awk - 無論如何可以工作 - 並只輸出filea中缺失的hostnamee
。
我可以得到這個工作,但它並不特別做我所需要的,如果我交換它,我什麼也得不到。
[email protected]:/netops/backups/scripts$ fgrep -f filea fileb -i -w -o
hostnamea
hostnameb
hostnamec
hostnamed
HOSTNAMEF
很酷 - 我得到了File-B中的匹配,但是如果我嘗試反轉它,該怎麼辦?
[email protected]:/netops/backups/scripts$ fgrep -f fileb filea -i -w -o
[email protected]:/netops/backups/scripts$
我嘗試了幾個不同的命令,但似乎無法弄清楚。我使用-i來忽略大小寫,-w匹配整個單詞和-o
我找到了一些解決方法,但希望有一個更優雅的方法來做到這一點,使用單個命令awk,egrep, fgrep或其他。
[email protected]:/netops/backups/scripts$ fgrep -f filea fileb -i -w -o > test
[email protected]:/netops/backups/scripts$ diff filea test -i
5D4 < hostnamee
在我的真實情況下 - 上面的這個工作甚至不像上面的例子那樣工作。我在文件名中也有 - 和_,並且它似乎沒有給出與上述相同的結果。 –
你想'HOSTNAMEF'被認爲是匹配'hostnamef'嗎?即不區分大小寫? – Yunnosch
是的 - 在這種情況下,一些備份文件的例子 - 在大寫完成,而我的主機文件都是小寫 - 所以HOSTNAMEF應=主機名 –