我有个问题要问你:我有一个很大的日志文件,我想清理它。我只对包含确定词的字符串感兴趣,我想删除其他字符串。即:
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
我该怎么做?提前感谢!
grep"place2"/path/to/log/file>cleanedFile.txt
我写了一篇关于结合find/sed/grep的博客文章——你可能会感兴趣。
尝试这个grep命令:
grep "<place2>" log-file > out-file
CCD_ 1和CCD_。
grep "<place2>" file.log > file.out
wc file.out
wc(单词计数(用于计数单词。但对于两个问题,您通常应该打开两个问题。:(
另取一行,选择第4列等于"place2"的行
awk '$4 == "place2"' file
与大多数其他答案不同,这会修改文件,不需要进一步重命名。
sed -i -n '/place2/p' /var/log/file
这是假定GNU sed。如果您没有GNU sed,但有perl:
perl -i -ne '/place2/ && print' /var/log/file
这两个例子也可以进行就地编辑。
$ 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
纯粹使用外壳
while read -r line; do case $line in *place2) echo "$line";; esac; done < file > temp && mv temp file