Global search REgular expression and Pint out the line
grep '^linux' test.log
grep 'linux$' test.log
表示空行没有任何内容,空格也是
shellgrep '.' test.log
shellgrep -C '^.*error' test.log
shell[a-z] [A-Z] [0-9] grep '[a-zA-Z0-9]' test.log
[^abc]取排除abc的内容
shellgrep '[^abc]' test.log
grep | [options] | [pattern] | files |
---|---|---|---|
命令 | 参数 | 模式 | 文件 |
-i ignorecase忽略字符大小写 | |||
-o 仅显示匹配到的字符串本身 | |||
-v 显示不能被匹配到的行 | |||
-E 后面可以跟正则表达式 | |||
-n 显示匹配的行与行号 |
stream Editor字符流编辑器
sed [options] [sed内置命令字符] [输入文件]
options:-n取消sed的默认输出,通常与p命令一起用
-i直接将修改结果写入文件,不用-i sed修改的是内存数据
-e多次编辑,用多个-e
-r正则扩展
sed内置命令字符:
a append,对文本追加,在文末添加一行或多行
d deletet删除匹配行
i insert插入文本,在指定行插入一行或多行
p print打印匹配行的内容
s/正则/替换内容/g 匹配正则内容,然后替换内容,结尾g代表全局匹配
sed匹配范围
范围 | 解释 |
---|---|
空地址 | 全文处理 |
但地址 | 指定文件某一行 |
/pattern/ | 被pattern匹配的每一行 |
10,20 | 第十行到第二十行 |
10,+5 | 第10行向下5行 |
步长 | 1~2从第一行开始步长为2匹配1,3,5,7,9,11行 |
2~2从第二行开始步长为2匹配2,4,6,8,10,12行 |
shellsed '2,3p' test.log -n#打印文件第2,3行数据
sed '/error/p' test.log -n#打印含error的行
sed '/error/d' test.log -i#删除含error的行并写入源文本
sed 's/error/info/g' test.log -i#将error的行替换为info并写入文本
sed -e 's/error/info/g' -e 's/critical/error/g' test.log -i
#将error换成info将critical替换成error并写入源文本
sed '2a system runnig good!' test.log -i
#在第二行后面追加system runnig good!并写入源文本
sed '3i system out of memory' test.log -i
#在第三行前面加入system out of memory并写入源文本
sed '4a infection \ninfection' test.log -i
#在第4行后面追加两行infection并写入源文本
ifconfig eth0 | sed -e '2s/^inet.*//' -e '2s/net.*$//p' -n
#-e的多次使用
ifconfig eth0 | sed '2p' -n | sed 's/^.*inet//' | sed 's/net.*$//'#获取网卡0的ip地址
Linux命令中如何去掉某文件中的空行?
使用sed命令可以去掉某文件中的空行:
sed '/^$/d' filename
awk options pattern {action} file
shellawk '{print $2}' test.log#打印第二列的内容 awk '{print $0}' test.log#打印完整的内容 awk '{print $NF}' test.log#打印最后一列 awk '{print $NF-1}' test.log#打印倒数第二列 awk '{print $n}' test.log#打印第n列的内容 awk '{print $2,$3}' test.log#打印第二列和第三列的内容 awk '{print "第一列:"$2,”第二列:"$3}' test.log#打印自定义前缀第二列和第三列的内容
options参数
-F指定分割字段符
-v定义或修改一个awk内部的变量
-f从脚本文件中读取awk命令
shellawk -v FS=':' '{print$2}' test.log #以:为分隔符打印第2列的内容
awk '{print$1}' test.log | sort | uniq -c | sort -r
iniroot@4f08afd9a913:/pythonAutomationFramework/logs# sort test.log | uniq -c | sort -r
26 2023-02-27 03:33:56 INFO [{'title': '漠河舞厅 (烟嗓女生版)', 'author': '娜依', 'url': 'https://api.i-meto.com/meting/api?......
14 2023-02-27 03:33:57 INFO [{'title': '漠河舞厅 (烟嗓女生版)', 'author': '娜依', 'url': 'https://api.i-meto.com/meting/api?......
6 2023-02-27 03:34:05 INFO {'code': 200, 'msg': '域名正常'}
5 2023-02-27 03:34:06 INFO {'code': 200, 'msg': '域名正常'}
5 2023-02-27 03:34:04 INFO {'code': 200, 'msg': '域名正常'}
4 2023-02-27 03:34:07 INFO {'code': 200, 'msg': '域名正常'}
2 2023-02-27 03:34:12 INFO {'code': 200, 'msg': '域名正常'}
2 2023-02-27 03:34:09 INFO {'code': 200, 'msg': '域名正常'}
2 2023-02-27 03:34:08 INFO {'code': 200, 'msg': '域名正常'}
1 2023-02-27 03:34:10 INFO {'code': 200, 'msg': '域名正常'}
1 2023-02-27 03:34:02 INFO {'name': 'morpheus', 'job': 'morpheus', 'id''morpheus', 'id': '3', 'createdAt': '2023-02-27T03:33:55.142Z'}
1 2023-02-27 03:33:55 INFO {'name': 'morpheus', 'job': 'morpheus', 'id': '894', 'createdAt': '2023-02-27T03:33:52.968Z'}