2011-04-15 64 views
0

我有一個問題給你:我有一個大的日誌文件,我想清除它。我只對包含確定詞的字符串感興趣,我想刪除其他字符串。即:從unix中的文本文件中計算單詞和刪除字符串

access ok from place1 
access ko from place1 
access ok from place2 
access ko from place2 
access ok from place3 
access ko from place3 
...... 

而且我想只獲得 'place2' 條目:

access ok from place2 
access ko from place2 

我該怎麼辦呢? 在此先感謝!

回答

2

試試這個grep命令:

grep "\<place2\>" log-file > out-file 

\<\>將確保匹配完整的單詞從而inplace2不會匹配。

1
grep "\<place2\>" file.log > file.out 
wc file.out 

用於計數的話WC(字數)。但對於兩個問題,你通常應該開兩個問題。 :)

0

另取,選擇線,其中第4列等於「place2」

awk '$4 == "place2"' file 
0

與大多數其他的答案,這個修改就地文件,並不需要進一步的重新命名。

sed -i -n '/place2/p' /var/log/file 

這是假定GNU sed。如果你沒有GNU的sed但有Perl:

perl -i -ne '/place2/ && print' /var/log/file 
0

這兩個例子確實就地編輯爲好。

$ awk '$NF=="place2"{print $0>FILENAME}' file 

$ ruby -i.bak -ane 'print if $F[-1]=="place2"' file 

有純粹使用shell

while read -r line; do case $line in *place2) echo "$line";; esac; done <file> temp && mv temp file 
其他方式文件中的這些線

sed -i.bak -n '/place2$/p' file 

grep 'place2$' file > temp && mv temp file