这很好用:
find . -type f -name "*dan*" | grep '.html'
但是如何向 grep 添加一个呢?使用OR
? -o
?
find . -type f -name "*dan*" | grep '.html' or '.php' ???
这很好用:
find . -type f -name "*dan*" | grep '.html'
但是如何向 grep 添加一个呢?使用OR
? -o
?
find . -type f -name "*dan*" | grep '.html' or '.php' ???
当我尝试 grep syslog 时,我遇到了:
$ grep -E 'Sep.*EXT4' /var/log/syslog
[... some data ...]
grep: /var/log/syslog: binary file matches
编辑:第一次尝试使用cmp
和strings
,但这对UTF-8产生了错误的结果。
$ \zgrep -C 2 -Pan '\x00' /var/log/syslog* | cat -vET
/var/log/syslog.1-8236-Sep 23 11:59:12 jakub-Latitude-5431 rtkit-daemon[1824]: Successfully made thread 11652 of process 6125 owned by '1000' RT at priority 10.$
/var/log/syslog.1-8237-Sep 23 11:59:12 jakub-Latitude-5431 rtkit-daemon[1824]: Supervising 10 threads of 7 processes of 1 users.$
/var/log/syslog.1:8238:^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@Sep 23 12:03:51 jakub-Latitude-5431 systemd-modules-load[915]: Inserted module 'lp'$
/var/log/syslog.1-8239-Sep 23 12:03:51 jakub-Latitude-5431 systemd-modules-load[915]: Inserted module 'ppdev'$
/var/log/syslog.1-8240-Sep 23 12:03:51 jakub-Latitude-5431 lvm[907]: 2 logical volume(s) in volume group "vgubuntu" monitored$
/var/log/syslog.2.gz-19151-Sep 13 17:13:03 jakub-Latitude-5431 kernel: [371517.143856] audit: type=1400 audit(1726240383.797:15759): apparmor="DENIED" operation="open" class="file" profile="snap.firefox.firefox" name="/etc/fstab" pid=389526 comm="firefox" requested_mask="r" denied_mask="r" fsuid=1000 ouid=0$
/var/log/syslog.2.gz-19152-Sep 13 17:13:03 jakub-Latitude-5431 kernel: [371517.149625] audit: type=1400 audit(1726240383.802:15760): apparmor="DENIED" operation="open" class="file" profile="snap.firefox.firefox" name="/etc/fstab" pid=389526 comm="firefox" requested_mask="r" denied_mask="r" fsuid=1000 ouid=0$
/var/log/syslog.2.gz:19153:^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@Sep 13 17:31:40 jakub-Latitude-5431 systemd-modules-load[981]: Inserted module 'lp'$
/var/log/syslog.2.gz-19154-Sep 13 17:31:40 jakub-Latitude-5431 systemd-modules-load[981]: Inserted module 'ppdev'$
/var/log/syslog.2.gz-19155-Sep 13 17:31:40 jakub-Latitude-5431 systemd-modules-load[981]: Inserted module 'parport_pc'$
我不确定这里发生了什么?我认为 syslog 包含二进制字符是不正常的。
从man grep
:
-o, --only-matching
Print only the matched (non‐empty) parts of a matching line, with each such part on a separate output line.
一个简单的问题:如何仅打印匹配行的匹配(非空)部分,并且每个此类部分都在同一输出行上?
我发现有时,mvn
输出中的 ANSI 转义字符会阻止我使用 grep 进行搜索:
mvn | grep -P "\[INFO\]"
我必须使用"\[.*INFO.*\]"
才能得到结果。
如何禁用处理 ANSI 转义字符?我认为有一些配置吗?
我想用 sed 过滤一些标准输出,但我不知道如何。标准输出示例是:
.
.
.
Model a. # This should be captured
.
.
.
Metrics results: # This should be captured
==================== # This should be captured
metric 1 # This should be captured
metric 2 # This should be captured
metric 3 # This should be captured
==================== # This should be captured
.
.
.
Model b # This should be captured
.
.
.
Metrics results: # This should be captured
==================== # This should be captured
metric 1 # This should be captured
metric 2 # This should be captured
metric 3 # This should be captured
==================== # This should be captured
.
.
.
其中.
表示包含任何随机字符的行。所以结果是
Model a
Metrics results:
====================
metric 1
metric 2
metric 3
====================
Model b
Metrics results:
====================
metric 1
metric 2
metric 3
====================
我可以使用什么 sed 命令?还将感谢有关如何了解 sed 的解释。
我想过滤文件中包含的所有行,mySearchString
然后将它们组合在一起并计算它们。
示例查找包含的所有行9791
AB-9791___Foo
AB-9791___Foo
DE-9791___Bar
AB-0001___Foo
使用 $ grep "9791" myFile.txt
给出了这个结果
AB-9791___Foo
AB-9791___Foo
DE-9791___Bar
// 0001 was filtered out
这个结果应该像这样分组和计数(如 SQL Group by Count
)
AB-9791___Foo 2
DE-9791___BAR 1
这个答案使用 perl,但我们的机器上没有安装 perl。
什么工具(grep、awk、sed或其他)可用于实现第二部分的分组和计数?
在我的测试文件Test_2.txt
中,这些行是写的
AB-9791___Foo
DE-9791___Bar
AB-0001___Foo
AB-9791___Foo
AB-9791___Foo
AB-9791___Foo
DE-9791___Bar
DE-9791___Bar
DE-9791___Bar
我复制并粘贴了每一AB-9791___Foo
行,所以它们应该是相同的。运行$ grep '9791' Test_grep_uniq_sort.txt | uniq -c
给出了这个结果
1 AB-9791___Foo
1 DE-9791___Bar // expected: 4 actual: 1, 2, 1
3 AB-9791___Foo // expected: 4 actual: 1, 3
2 DE-9791___Bar
1 DE-9791___Bar
运行$ sort Test_2.txt > Test_2_sort_0.txt
然后使用grep | uniq
onTest_2_sort_0.txt
几乎返回了预期的输出。
$ grep '9791' Test_2_sort_0.txt | uniq -c
4 AB-9791___Foo
1 DE-9791___Bar // this is due to a missing line break / line feed
3 DE-9791___Bar
手动添加换行符/换行符后一切正常