@文本处理之三剑客总结grep-sed-awk

1|0

1|0文章目录

1|0三剑客的扩展与总结

  1. grep #过滤 给过滤出来的内容加上颜色

    选项:

    -n #给过滤出来的内容加上此行所在文件的行号 -i #忽略大小写 -c #统计的是行数 包含过滤字符串的行数 -v #排除 删除 取反 -o #只显示过滤出来的内容 -w #精确匹配 只匹配你要过滤的字符串,而不是过滤包含此字符串的字符串 -r #递归过滤 过滤多个文件 针对目录操作 -A #匹配过滤出来的内容向下多少行 后面加正整数 -B #匹配过滤出来的内容向上多少行 -C #匹配过滤出来的内容各向上向下多少行 -E #支持扩展正则使用 === egrep ^ #以什么开头 $ #以什么为结尾 ^$ #空行 排除存在空格或者tab键的空行 . #匹配除换行符以外的任意一个字符 * #匹配前面的字符出现0次或者0次以上 .* #所有 | #或者 扩展正则

``` `

  1. sed #擅长替换 增删改查 后向引用

    选项:

    -n #取消默认输出 -r #支持扩展正则 -i #真正的改变文件内容 -e #允许多项编辑 了解

    内部命令:

    p #打印 d #删除 排除 取反 s #替换 g #全局 i #忽略大小写 a #追加 i #插入 \n #换行符 \t #tab键 = #显示行号
后向引用: [root@qls ~]# ifconfig eth0 eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 10.0.0.100 netmask 255.255.255.0 broadcast 10.0.0.255 inet6 fe80::3310:9d15:9ee4:43e8 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:eb:ea:8d txqueuelen 1000 (Ethernet) RX packets 19648 bytes 2074525 (1.9 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 13896 bytes 1420434 (1.3 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 [root@qls ~]# ifconfig eth0 | sed -n '3p' | sed -r 's#(.*6 )(.*)( pr.*)#\2#g' fe80::3310:9d15:9ee4:43e8 [root@qls ~]# ifconfig eth0 eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 10.0.0.100 netmask 255.255.255.0 broadcast 10.0.0.255 inet6 fe80::3310:9d15:9ee4:43e8 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:eb:ea:8d txqueuelen 1000 (Ethernet) RX packets 19930 bytes 2100423 (2.0 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 14078 bytes 1441164 (1.3 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 [root@qls ~]# ifconfig eth0 | sed -n '2p' inet 10.0.0.100 netmask 255.255.255.0 broadcast 10.0.0.255 [root@qls ~]# ifconfig eth0 | sed -n '2p' | sed -r 's#(^.*et )(.*)( n.*$)#\2#g' 10.0.0.100 [root@qls ~]# ip a s eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0c:29:eb:ea:8d brd ff:ff:ff:ff:ff:ff inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0 valid_lft forever preferred_lft forever inet6 fe80::3310:9d15:9ee4:43e8/64 scope link noprefixroute valid_lft forever preferred_lft forever [root@qls ~]# ip a s eth0 | sed -n '3p'|sed -r 's#(^.*t )(.*)(/.*)#\2#g' 10.0.0.100 灵活 思路 方法 [root@qls ~]# stat /etc/hosts File: ‘/etc/hosts’ Size: 158 Blocks: 8 IO Block: 4096 regular file Device: 803h/2051d Inode: 67125348 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: system_u:object_r:net_conf_t:s0 Access: 2020-07-14 17:30:04.678582732 +0800 Modify: 2013-06-07 22:31:32.000000000 +0800 Change: 2020-07-06 02:13:36.028996182 +0800 Birth: - [root@qls ~]# stat /etc/hosts | sed -nr '4s#.*: \((.*)/.*#\1#gp' 0 [root@qls ~]# stat /etc/hosts | sed -nr '4s#.*: \((.*)/-r.*#\1#gp' 0644 [root@qls ~]# stat /etc/hosts | sed -nr '4s#.*\((.*)/-r.*#\1#gp' 0644 多种方法 多种选择
  1. awk #擅长取列

    选项:

    -F #指定分隔符 默认的为空白字符为分隔符 FS -v #指定内部变量 ! #取反 排除

    内部变量:

    FS #指定输入分隔符 OFS #指定输出分隔符 NR #行号 NF #最后一列 $NF #显示最后一列 $0 #完整的一行内容 $n #n数字 指定取出的某一列
了解 1. 排除空行 存在空格和tab键的空行 [root@qls ~]# cat sshd_config # $OpenBSD: sshd_config,v 1.100 2016/08/15 12:32:04 naddy Exp $ # This is the sshd server system-wide configuration file. See # sshd_config(5) for more information. # This sshd was compiled with PATH=/usr/local/bin:/usr/bin # The strategy used for options in the default sshd_config shipped with # OpenSSH is to specify options with their default value where # possible, but leave them commented. Uncommented options override the # default value. # If you want to change the port on a SELinux system, you have to tell # SELinux about this change. # semanage port -a -t ssh_port_t -p tcp #PORTNUMBER # Port 22 #AddressFamily any ListenAddress 0.0.0.0 #ListenAddress :: [root@qls ~]# grep -v '^$' sshd_config [root@qls ~]# sed '/^$/d' sshd_config [root@qls ~]# awk '!/^$/' sshd_config # -P 支持tab键 [root@qls ~]# grep -Pv '^[ \t]*$' sshd_config [root@qls ~]# sed '/^[ \t]*$/d' sshd_config [root@qls ~]# awk '!/^[ \t]*$/' sshd_config # \s 空白字符 [root@qls ~]# grep -v '^\s*$' sshd_config [root@qls ~]# sed '/^\s*$/d' sshd_config [root@qls ~]# awk '!/^\s*$/' sshd_config `` 2. 排除空行和注释行 #号开头的 [root@qls ~]# grep -Ev '^$|^#' sshd_config [root@qls ~]# grep -Ev '^\s*$|^#' sshd_config Port 22 ListenAddress 0.0.0.0 [root@qls ~]# sed -r '/^\s*$|^#/d' sshd_config Port 22 ListenAddress 0.0.0.0 [root@qls ~]# sed -r '/^[ \t]*$|^#/d' sshd_config Port 22 ListenAddress 0.0.0.0 [root@qls ~]# awk '!/^[ \t]*$|^#/' sshd_config Port 22 ListenAddress 0.0.0.0 [root@qls ~]# awk '!/^\s*$|^#/' sshd_config Port 22 ListenAddress 0.0.0.0 ``` ``` 3. 将/etc/passwd文件中的第一列和第七列位置进行调换 awk 等值替换 [root@qls ~]# awk -F '[:]' '{a=$1;$1=$NF;$NF=a;print}' passwd | tr ' ' ':' /bin/bash:x:0:0:root:/root:root /sbin/nologin:x:1:1:bin:/bin:bin /sbin/nologin:x:2:2:daemon:/sbin:daemon /sbin/nologin:x:3:4:adm:/var/adm:adm /sbin/nologin:x:4:7:lp:/var/spool/lpd:lp [root@qls ~]# awk -F '[:]' -vOFS=":" '{a=$1;$1=$NF;$NF=a;print}' passwd /bin/bash:x:0:0:root:/root:root /sbin/nologin:x:1:1:bin:/bin:bin /sbin/nologin:x:2:2:daemon:/sbin:daemon /sbin/nologin:x:3:4:adm:/var/adm:adm /sbin/nologin:x:4:7:lp:/var/spool/lpd:lp

__EOF__

本文作者ଲ小何才露煎煎饺
本文链接https://www.cnblogs.com/zeny/p/15121642.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   ଲ小何才露煎煎饺  阅读(21)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
点击右上角即可分享
微信分享提示