linux特殊符号及三剑客

命令行下的特殊符号

* 通配符 | 管道符

& 前台进程放置后台

命令连接符号

&& 前面命令执行成功则执行后面命令,前面失败后面不执行

|| 前面命令执行成功则不执行后面命令,前面失败执行后面命令

; 执行命令的结束符,并列命令一起执行

引号的区别

'' 吃啥吐啥,变成字符串,不解析特殊符号

"" 解析特殊符号的功能 ,将多个字符串作为整体

`` 优先执行

$() 与``功能一样

\ 反斜线,不解析特殊符号

三剑客

grep:擅长字符串过滤

sed:擅长行级字符串过滤

awk:擅长列级操作

grep

grep '需要过滤的字符串' 文件        快速查找文件中指定字符串,显示字符串所在行
    -v 取反    不显示指定字符串所在行(invert-match)
    -i 不区分大小写(ignore-case)
    -w 按照字符串过滤 字符串作为整体,独立的字符串(word-regexp)
    -n 显示行号 在源文件的第几行(number)
grep 'test' *    当前所有文件哪些包含test
    -r 查看当前文件和目录里的文件是否包含字符串,递归查询(recursive)
    -l 只显示包含此字符的文件名,不显示搜索的字符串所在行,用来排除干扰字符串(file-with-matches)
    -A n    #after过滤文件内容后,显示包含所过滤的行及后面的n行
    -B n    #before过滤文件内容后,显示包含所过滤的行及前面的n行
    -C n    #center过滤文件内容后,显示包含所过滤的行及前后各n行
    -q   静默模式, 不显示任何信息(quiet)
    

sed

命令

sed '过滤条件 动作' 文件
    过滤条件 数字代表处理第几行
    动作
    -i处理后的文本覆盖源文件(insert)
动作
p    输出print,输出原始数据和处理后的数据,默认都会输出,加参数-n只输出处理后的数据
d    删除delete
a    符号条件的行的下一行插入一行新内容,追加append
c    替换
输出
sed -n "$p" /etc/passwd        输出/etc/passwd最后一行
sed -ne "50p" -e "55P" /etc/passwd    输出50行,55行
sed -n "40,50p" /etc/passwd    输出40-50行
sed -n "1~2p" /etc/passwd    输出奇数行,1从哪开始,~间隔,间隔2,每隔两行输出
删除
sed  "50d" /etc/passwd     删除50行
sed  "90a dms" /etc/passwd  第九十行的下一行插入一行dms
sed "100c dms" /etc/passwd  第一百行替换为dms
sed  '/Lane/d' test1.txt   删除包含Lane的含
查找字符串
sed -n '/过滤的字符串/p' /etc/passwd
sed -n '/\/sbin\/nologin/p' /etc/passwd
批量替换
sed 's/被替换的字符/用什么替换/g' 文本
sed 's/:/ /g' /etc/passwd | column -t        #column -t格式化输出

 sed '1,3s/^/#/' /tmp/grub.conf    首行添加#
sed '1,3s/^./#/' /tmp/grub.conf    首行的第一个字母替换成#

awk

awk '条件判断{print 列1,列2}' 文件
    -F 指定列分割符

输出

awk -F ':' '{print $1}' /etc/passwd    分割指定输出第几列
awk -F ':' '{print $1 $3}' /etc/passwd  输出多列
awk -F ':' '{print $1"用什么分割他们显示"$3}' /etc/passwd  输出多列,指定字符分割显示
awk -F ':' '{print $1 $NF}' /etc/passwd  $NF最后一列

条件判断

awk -F ':' '$5>1000{print $5 $3}' /etc/passwd   条件判断,第五列大于1000的
IP a |awk 'NR==2 {print $3}'   判断是否等于第二行
awk -F ':' '/\/sbin\/nologin/{print $1" "$NF}' /etc/passwd   判断是否包含/sbin/nologin

正则表达式

作用

结合三剑客,更精确的匹配分析文本内容

分类

普通正则

直接使用

grep '.'   每次匹配一个字符
 -o显示匹配过程
.    匹配任意单个字符,每个字符都是
*    匹配和前面相邻字符连续出现0次或多次,a*,寻找a出现0次或多次
.*    匹配所有内容,每个字符出现0次或多次
^    ^a匹配以^后面的字符串开头的,匹配每行以谁开头
$    a$匹配每行以a结尾
^$    空行,以空开头,以空结尾
[]    [abc]分别以a,b,c去过滤一遍,里面的字符分别被匹配一次
[^abc]    取反,不匹配a,b,c

扩展正则

  • grep -E 支持扩展正则(E expression)
  • egrep 支持扩展正则
  • sed -r 支持扩展正则
  • awk 支持扩展正则
+    匹配前面字符出现一次或多次
?    匹配前面字符出现0次或1次
{n}    匹配前面字符出现n次
{m,n}    匹配前面字符连续出现最少m次,最多n次
'{3,5}'    
|    或者

grep -Ev "^#|^$" /etc/ssh/sshd_config    过滤注释和空行
()    括住的内容作为整体  '(abc){3}'

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值