上篇的例子都是找档案
这次玩一下command | grep [option] pattern
dpkg -l | grep -i "python"
利用dpkg -l
列出所有安装的deb package, 然後透过管线传给grep -i python
-i
表示忽略大小写
find . -name "*.png" | grep -i "ithome"
想准确搜寻amd
dpkg -l | grep -i "amd"
会发现amd64这样也被找出来, 但其实我们要的不是这些.
这时利用-w
找到字串的完整匹配,
就是并非是字串中间有出现该字就算, 而是要字面本身就等於搜寻字串
dpkg -l | grep -iw "amd"
利用find
找出当前目录下所有档名结尾是.png的档案, 透过管线传给grep -i "ithome"
找出档名有ithome的png档案.
有时候会想要查询, 匹配到的该行的前後几行, 查看日志时总是如此
这时能搭配-A
after , -B
before
# 准备假资料
cat > grepText.txt <<EOF
10
11
12
13 ithome
14
15
EOF
cat grepText.txt| grep -A 1 -B 2 "ithome"
我们把匹配到ithome该行的後1行与前2行, 也一起显示出来
还有一种是-C
, 把匹配到该行为中心点, 前後都显示出来
cat grepText.txt| grep -C 1 "ithome"
计算匹配项的总数, 搭配-c
, 这很类似於wc
这指令
ip addr | grep -c inet6
计算出有几组ipv6的ip
显示匹配行的行号, 搭配-n
cat grepText.txt| grep -n "ithome"
最前面的4:
表示是该文件的第4行
想准确知道该匹配字串出现多少次, 而不是算出匹配多少行
可以搭配-o
only-matching
# 准备假资料
cat > grepText.txt <<EOF
10
11
12 ITHOME HOME
13 ithome home
14thITHOME
15
EOF
echo "有-o"
cat grepText.txt| grep -o "home" | wc -l
echo "没-o"
cat grepText.txt| grep "home" | wc -l
可以看到-o
的匹配到2次,因为同一行出现2次, 都会纳入计算
没-o
的, 就是该行匹配到第一次, 就没纳入计算了
反向匹配-v
invert-match
这个我蛮常用的, 用来过滤
一些讯息
cat grepText.txt| grep -vin "ithome"
这里就把没匹配到ithome(不分大小写)的行给显示出来, 并显示行号
grep提供非常多option, 各种组合下, 基本可应付各种场景.
我自己蛮常是查找日志内, 有没有我不知道的错误讯息类型, 我就会透过-v
做反向表列.
能否用grep, 去取得https://ithelp.ithome.com.tw/2021ironman
这网页的内容里面,
有多少笔铁人参赛者门的文章连结呢?
Ans:
curl -X GET https://ithelp.ithome.com.tw/2021ironman | grep -c "https://ithelp.ithome.com.tw/articles/"
> 30
谈到 Android 的 dependency injection (DI),大家一定会想到 Dag...
昨天我们使用这两个 struct 来代表整个游戏的状态,那我们今天就实际的来定义他们 在开始之前 在...
本次专题竞赛,由国际电脑稽核教育协会(ICAEA)、国立中正大学会计与资讯科技学系、国立政治大学产学...
早上查看文章时 , 发现贴到昨天的资料 本鲁立马作文章修改 , 如造成 邦友 的不便 , 请各位海...
教材网址 https://coding104.blogspot.com/2021/06/java-a...