我有一个问题:我有一个大日志文件,我想清理它。我只对包含确定单词的字符串感兴趣,我想删除其他字符串。即:
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
我该怎么办? 提前谢谢!
答案 0 :(得分:4)
grep“place2”/ path / to / log / file> cleanedFile.txt
我写了blog post about combining find/sed/grep - 你可能会感兴趣。
答案 1 :(得分:2)
试试这个grep命令:
grep "\<place2\>" log-file > out-file
\<
和\>
会确保匹配完整的字,因此inplace2将不会匹配。
答案 2 :(得分:1)
grep "\<place2\>" file.log > file.out
wc file.out
用于计算单词的wc(字数)。但对于2个问题,通常应该打开两个问题。 :)
答案 3 :(得分:0)
另一个选择,选择第4列等于“place2”的行
awk '$4 == "place2"' file
答案 4 :(得分:0)
与大多数其他答案不同,它会就地修改文件,不需要进一步重命名。
sed -i -n '/place2/p' /var/log/file
这假设GNU sed。如果你没有GNU sed但是有perl:
perl -i -ne '/place2/ && print' /var/log/file
答案 5 :(得分:0)
这两个例子也进行了就地编辑。
$ awk '$NF=="place2"{print $0>FILENAME}' file
$ ruby -i.bak -ane 'print if $F[-1]=="place2"' file
还有其他方法来记录这些行
sed -i.bak -n '/place2$/p' file
grep 'place2$' file > temp && mv temp file
纯粹使用shell
while read -r line; do case $line in *place2) echo "$line";; esac; done < file > temp && mv temp file