如果行包含以下内容,则需要过滤并显示日志行正好 2 个逗号,并且不包含特定字符串。我需要使用哪个 Linux 命令,,,awk
表达式grep
是什么?
对于第二个条件我使用这个:
awk '!/specificstring/' ./log/file/path
两个逗号检查我不知道如何输入。通常行是这样的两行:
arbitrary,arbitrary,arbitrary,arbitrary
arbitrary,arbitrary,arbitrary
需要第二种线。
尝试过这样的事情:
grep -P '[^,]+[,][^,]+[,][^,]+[,]"specificstring"[^,]+' ./log/file/path
如何排除“specificstring”?
答案1
我建议:
grep '^[^,]*,[^,]*,[^,]*$' file | grep -v 'specificstring'
答案2
awk
这可以通过结合两个条件一次性完成:
awk '/^[^,]*,[^,]*,[^,]*$/ && !/specificstring/' ./log/file/path
perl
使用几乎相同的命令可以实现相同的效果:
perl -lane 'print if /^[^,]*,[^,]*,[^,]*$/ && !/specificstring/' ./log/file/path
以更一般的意义来回答这个问题,即如果发现任意数量的字符串出现,则过滤行:
perl -lane '@m = /,/g; print if scalar @m == 2 and !/specificstring/' ./log/file/path