[英]Comparing two files at end of line in Linux
我想比較兩個文件,並在行尾的一個文件中獲取匹配字符串的輸出:
假設我有兩個文件: -
文件1:
xyzabcdef
xyz
abcdefghi
文件2:
fghjkl
wertyu
abcdef
我可以這樣做:
grep -Fif file2 file1
這給了我以下輸出:
xyzabcdef
abcdefghi
這是因為file2中的abcdef匹配file1中的這兩行。 但是,我想要的是將file1中的行尾與file2中的行的末尾進行比較。 所以,我想輸出為:
xyzabcdef
是否有一些神奇的命令可以讓我這樣做?
擴展Lars的解決方案,我認為這是最好的選擇。 只需使用以下內容:
cat -E file2 | grep -if - file1
訣竅是使用cat
-E
選項在每行的末尾附加$
。 然后閱讀使用標准輸入模式-
的grep的選項。 你還必須使用正則表達式匹配,所以我刪除了-F
。
我會將$
追加到file2的每一行,並使用命令grep -if file2 file1
。
$
是一個正則表達式,意思是“在行尾”匹配。 選項-F
將使用與正則表達式不兼容的固定字符串模式,因此省略此選項。
你可以簡單地通過讀取file2
中的每一行並使用每一行作為grep
的搜索術語來將該術語錨定到$
行的末尾,例如:
$ while read -r line; do grep "${line}$" file1; done <file2
xyzabcdef
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.