2012-09-26 13 views

回答

0

則可以使用AWK這樣得到:

awk -f grepandreplace.awk file2 file1 

的 「grepandreplace.awk」 的代碼是:

#!/usr/bin/awk -f 
BEGIN { 
    FS = "/"; 
    f_grep = ARGV[2]; 
    ARGC = 2; 

    while ((getline < f_grep) > 0) { 
     grep[$1] = ""; 
    } 
} 

{ 
    if ($1 in grep) { 
     print $1"/totalXYZ"; 
    } else { 
     print $0; 
    } 
} 

而且我得到了你想要的輸出:

Green Apple/totalXYZ 
Red Peach/quantity/200 

有任何問題嗎?留下評論。

+0

謝謝!這太棒了! – user1700391

+0

我還發現了另一種方法在一行中完成它(請參閱我的下一個答案)。謝謝 – arutaku

0

您可以使用2 greps在一行中得到它:第一個用於匹配,第二個用於反向匹配(-v)。 然後將第二個輸出附加到第一個輸出:

echo -e `grep -f file1 file2 | sed 's/quantity.*/totalXYZ/'`"\n"`grep -vf file1 file2` 
+0

再次感謝rmunoz。是的,這也起作用了!但是,如何讓它寫入file2?我記住了:sed -i .... – user1700391

+0

其實,使用你的代碼,我會將它重定向到file3,然後是mv file3 file2。再次感謝rmunoz的幫助。 – user1700391

+0

你不需要file3,你可以將輸出重定向到file2。不用謝 ;-) – arutaku

相關問題