linux三剑客(grep,awk,sed)常用基础面试准备

发布时间:2024年01月03日
1.grep.查找日志里面包含某个字符串的行

普通的: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

文章来源:https://blog.csdn.net/LQL1001/article/details/135087382
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。