笔记之路,shell 从入门到入土(一)grep & cut & sort & uniq & tee & paste & tr

一、grep 工具

1. 简介

   grep 是行过滤工具,用于根据关键字进行行过滤

2. 语法 & 选项

语法:
    grep [选项] '关键字' <文件名>

选项:
   '-i: 不区分大小写'
    -v: 查找不包含指定内容的行(反向选择)
   '-w: 全字匹配(words only)'
    -o: 打印匹配关键字
    -c: 统计匹配到的次数
   '-n: 显示行号'
   '-r: 逐层遍历目录查找'
    -A: 显示匹配行及后面多少行
    -B: 显示匹配行及前面多少行
    -C: 显示匹配行前后多少行
    -l: 只列出匹配的文件名
    -L: 列出不匹配的文件名(-l 求反)
   '-e: 使用正则匹配'
   '-E: 使用扩展正则匹配'
        ^key : 以关键字开头
        key$ : 以关键字结尾
        ^$   : 匹配空行
    --color=auto : 可以将找到的关键词部分加上颜色的显示

二、cut 工具

1. 简介

   cut 是列截取工具,用于列截取

2. 语法 & 选项

语法:
    cut [选项] <文件名>

选项:
    -c: 以字符为单位进行分割,截取
    -d: 自定义分隔符,默认为制表符'\t'
    -f: 与 -d 一起使用,指定截取那个区域

举例:

cut -d: -f1,6,7 test.txt    # 以:冒号分割,截取第1,6,7列内容
cut -c5-10 test.txt    # 截取每行第5个字符到第10个字符

三、sort 工具

1. 简介

   sort 工具用于排序,它将文件的每一行作为一个单位,从首字符向后,依次按 ASCII 码进行比较,最后将他们按升序输出。

2. 语法 & 选项

语法:
    sort [选项] <文件名>

选项:
   '-u: 去除重复行'
   '-r: 降序排列,默认为升序'
    -o: 将排序结果输出到文件中,类似重定向符号 >
   '-n: 以数字排序,默认是按字符排序'
    -t: 分隔符
    -k: 第 N 列
   '-b: 忽略前导空格'
    -R: 随机排序,每次运行结果不同

四、uniq 工具 (unique)

   uniq 用于去除连续重复行。

语法:
    uniq [选项] <文件名>

选项:
   '-i: 忽略大小写'
   '-c: 统计重复行次数'
   '-d: 只显示重复行'

五、tee 工具

   tee 将标准输入读取并写入到标准输出和文件,即:双向覆盖重定向(屏幕输出 | 文本输入)

语法:
    tee [选项] <文件名>

选项:
   '-a: 双向追加重定向'

举例:
echo hello | tee file1
cat file1
    hello
echo 999 | tee -a file1
cat file1
    hello
    999

六、paste 工具

   paste 用于合并文件行
   不加选项就是每行相加,中间默认用 tab 分隔。

语法:
    paste [选项] <文件名1> <文件名2> ... <文件名n>

选项:
    -d: 自定义分隔符,默认为制表符'\t'
    -s: 串行处理,非并行,一个文件变成一行,该文件每行用 tab 分隔

七、tr 工具

   tr 用于字符转换,替换和删除,主要用于删除文件中控制字符或进行字符转换

用法1:命令的执行结果交给 tr 处理,其中 str1 用于查询,str2 用于转换处理
    commands | tr 'str1' 'str2'

用法2: tr 处理的内容来自文件,记住要使用 '<' 标准输入
    tr 'str1' 'str2' < filename

用法3:匹配 str1 进行相应操作,如删除操作
    tr [选项] 'str1' < filename

选项:
    -d: 删除字符串1中所有输入字符
    -s: 删除所有重复出现字符序列,只保留第一个,即将重复出现字符串压缩为一个字符串

常匹配字符串:

字符串含义备注
a-z 或 [:lower:]匹配所有小写字母
A-Z 或 [:upper:]匹配所有大写字母
0-9 或 [:digit:]匹配所有数字
[:alnum:]匹配所有字母和数字[a-zA-Z0-9]
[:alpha:]匹配所有字母
[:blank:]所有水平空白
[:punct:]匹配所有标点符号
[:space:]所有水平或垂直的空格
[:cntrl:]所有控制字符\f Ctrl-L 走行换页
\n Ctrl-J 换行
\r Ctrl-M 回车
\t Ctrl-I tab键

注:vim 下显示控制字符的方法::set list

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值