我有兩個文件如何從一個引用第一個文件的文件中檢索一組兩行文件?
$cat file 1 Index1 annotation1 abcd Index2 annotation2 efgh Index3 annotation3 hijk Index4 annotation4 lmno Index5 annotation5 pqrs …
$cat file2 Index1 Index3 Index5
我想要得到的是線從文件1和後像下面檢索各行的行列表。
Index1 annotation1 abcd Index3 annotation3 hijk Index5 annotation5 pqrs
我目前的解決方案是使用grep和它的「文件」標誌 grep -A 1 --file="file2" file1 | awk '!/--/'
但我不知道是否有這個更優雅的解決方案。目前的解決方案時需要的文件是巨大的
非常感謝您爲整齊的解決方案。使用散列比瘋狂的瘋狂快得多。順便說一下,我修改了腳本以適合我的文件,它工作得很好。我不明白,也沒有使用的一行是'code' my($ keyword)=($ line =〜/ ^(\ S +)/);你能解釋一下這個嗎?這是邏輯清單嗎? – Alby 2012-04-17 02:45:47
它捕獲並將任何初始序列的非空格字符錨定在行的開始處,以'$ keyword'。 – 2012-04-17 03:03:29
謝謝!另一個快速問題是我的($關鍵字)在該行中的括號,是否有必要?我正在學習perl上下文,並且我記得()我保存了列表上下文嗎?但在標量環境中不是這樣嗎? – Alby 2012-04-17 16:16:16