簡體   English   中英

比較Linux中行尾的兩個文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM