2014-02-28 96 views
0

如何更改文本文件,以便僅擦除具有相同單詞的行?刪除重複的行

例如:

  1. 藍綠黃
  2. 紅橙棕色
  3. 紫色粉紅色綠色

期望的輸出

  1. 藍綠黃
  2. 紅橙棕色
  3. 因爲找到綠字的

,行得一乾二淨

+0

因此,如果在一行中找到以前行中的任何單詞,它必須被刪除? – fedorqui

+2

如何行:'foo bar foo'移除或保留?你的真實輸入文件有多大? – Kent

+0

輸入文件是一個文本文件,每行包含大約30個字符。它有隨機的單詞和fedorqui給出的描述是完美的。這就是我想要的 – user3019617

回答

1
perl -ne 'my $p=1;@w=split;for(@w){$p=0 if $w{$_}}print if $p;$w{$_}=1 for(@w)' file 

絕招:我使用這兩個數組@w當前行的話,哈希%w用於前面行中遇到的所有單詞。 $p用於指示打印是必要的。

這將打印foo bar foo。 不是的版本更容易,但它作爲OP的練習。 :-)

+0

你是一個巫師!你可以使用「grep」或「sort」功能嗎? 因爲我不明白perl所有這一切......我認爲你正在使用Perl的殼。我在說什麼時可能會出錯,但如果是這樣的話,你可以只使用shell命令,比如grep,sort等嗎?只是bash編程 對不起,我一開始並不具體,我非常感謝你的回答。 – user3019617

+0

我確信shell工具是可能的,但使用Perl oneliner可以更容易。除了一些嵌入式系統外,Perl在任何地方都可用。我甚至在我的路由器上。 – SzG

+0

非常感謝你的輸入。你肯定展示了我不知道的東西。我會盡力投資perl。 – user3019617