普通的:grep xxx test.log或者cat test.log | grep xxx
grep -i root test.log 忽略大小写匹配包含root的行
grep -v root test.log 匹配不包含root的行
grep -w ftp test.log 精确匹配ftp单词
grep bash$ passwd 匹配以bash结尾的行
grep ^# /etc/vsftpd/vsftpd.conf 匹配以#号开头的行
grep -A 5 mail test.log ??匹配包含mail关键字及其后5行
grep -B 5 mail test.log ??匹配包含mail关键字及其前5行
grep -C 5 mail test.log 匹配包含mail关键字及其前后5行
2.awk.一般用在取哪些列,配合shell使用
awk '{print $1}' test.log 将第一列打印出来
awk '{print $1":"$2}' 将第一列和第二列用:拼接再打印出来
awk -F ':' '{print $1,$NF}'??test.log 将test.log的第一列和最后一列打印出来,这个test.log中的内容都是以:分割的,所以用-F ':'
awk 'NR==3{print $0}' test.log 打印第三行的全部内容
3.sed.对文件进行操作
常用内部命令
a ? 在匹配后面添加
i ? 在匹配前面添加
d ? 删除
c ? 更改
s ? 查找替换 ?字符串
a,i相同用法,一个在行前加,一个在行后加
在log的每行后追加一行新数据内容: 2023 to 2024
sed 'a\2023 to 2024' log
在第二行后新开一行追加数据: 2023 to 2024
sed '2a\2023 to 2024' log
在第二到四行每行后新开一行追加数据: 2023 to 2024
sed '2,4a\2023 to 2024' log
找到包含"3 the"的行,在其后新开一行追加内容: 2023 to 2024
sed '/3 the/a\2023 to 2024' log
s是替换,某行中匹配的内容然后替换成新的内容。c是更改匹配的某行,替换成新的行
将log中每行的dog替换为cat
sed 's/dog/cat/' log
将log中第二行的dog替换为cat
sed '2s/dog/cat/' log
将log中第二到第四行的dog替换为cat
sed '2,4s/dog/cat/' log
匹配字符串替换:将包含字符串"A abc"的行中的dog替换为cat
sed '/A abc/s/dog/cat/' log
将log文件中的所有行的内容更改为: 2023 to 2024
sed 'c\2023 to 2024' log
d是删除
删除文件log第三到第四行的数据
sed '3,4d' log