飞跃高山与大洋的鱼飞跃高山与大洋的鱼
首页
先看
计算机
  • 数学
  • Linux
  • Arch
  • Manjaro
  • Ubuntu
  • CentOS
  • Kubernetes
  • Web
  • JavaScript
  • TypeScript
  • CSS
  • Canvas
  • Vue
  • Vite
  • NuxtJS
  • Webpack
  • Flutter
  • D3
  • Jest
  • WeApp
  • Utils
  • Nodejs
  • Nestjs
  • Golang
  • Nginx
  • Traefik
  • MySQL
  • MongoDB
  • Redis
  • Docker
算法
  • 像素风
  • Git
  • Github
  • VSCode
  • Chrome
  • Google
  • Bookmark scripts
  • 导航 🎉
  • VuePress 侧边栏插件
  • VuePress 官网
🚇 开往
首页
先看
计算机
  • 数学
  • Linux
  • Arch
  • Manjaro
  • Ubuntu
  • CentOS
  • Kubernetes
  • Web
  • JavaScript
  • TypeScript
  • CSS
  • Canvas
  • Vue
  • Vite
  • NuxtJS
  • Webpack
  • Flutter
  • D3
  • Jest
  • WeApp
  • Utils
  • Nodejs
  • Nestjs
  • Golang
  • Nginx
  • Traefik
  • MySQL
  • MongoDB
  • Redis
  • Docker
算法
  • 像素风
  • Git
  • Github
  • VSCode
  • Chrome
  • Google
  • Bookmark scripts
  • 导航 🎉
  • VuePress 侧边栏插件
  • VuePress 官网
🚇 开往
  • LINUX

    • 为什么不试试 Linux 呢
    • 一切皆文件
    • Shell 脚本
    • 别名 alias
    • 分发脚本 ansible
    • 归档和压缩
    • 命令选项
    • 命令行快捷键
    • Linux 常用命令
    • 解放双手计划
    • 检测服务器通达
    • Linux 系统目录结构
    • Dnsmasq
    • fail2ban
    • 防火墙 firewalld
    • 花里胡哨且实用的命令
    • 文本三剑客
      • grep
        • 1. 命令格式
        • 2. 常用选项
        • 3. 示例
      • sed(行)
        • 1. 命令格式
        • 2. 常用选项
        • 3. 内置命令
        • 4. 示例
      • awk(列)
        • 1. 命令格式
        • 2. 常用选项
        • 3. 示例
    • 如何启用硬盘
    • 输入、输出重定向
    • 作业控制
    • Prometheus
    • 磁盘阵列
    • 远程同步文件
    • SSH 让你的服务器更安全
    • 守护系统 systemd
    • 用户管理
    • 查看文本内容
    • 传参 xargs

文本三剑客

grep

grep(global regular expression print),适用于查找匹配文本,支持基础正则表达式,扩展的正则表达式需要增加 -E 选项或使用 egrep 命令。

1. 命令格式

警告

grep [选项…] patterns 文件

2. 常用选项

选项含义
-c统计匹配的行数。
-i忽略模式中的字母大小写。
-v取反,列出没有匹配到的。
-w匹配整个单词。
-n显示匹配的行号。
-E扩展正则表达式。
-o仅输出文件中匹配到的部分。

3. 示例

  • 取出存在 name 的行:

    grep name package.json
    
  • 取出没有 name 的行并显示行号:

    grep -vn name package.json
    
  • 获取文件中出现 docs 的次数:

    grep -o docs package.json | grep -c docs
    # or
    grep -o docs package.json | wc -l
    

sed(行)

sed(stream edit 流编辑器),就类似于 vim,可快速实现对文件的增删改查。区别是 vim 还需要交互操作,而 sed 可以预置一组规则。

1. 命令格式

警告

sed [选项…] [内置命令] 文件

2. 常用选项

选项含义
-n取消 sed 的默认输出(仅输出自己想要的)。
-i直接修改文件的内容,而非输出到终端。
-e脚本命令。
-f脚本文件命令。

3. 内置命令

命令含义
aappend,表示追加文本。
ddelete,表示匹配行的文本。
iinsert,表示插入文本。
pprint,表示打印匹配行的内容。
s匹配 regexp 部分内容,使用 replacement 替换 regexp 匹配的内容。

4. 示例

  • 替换文本中的 docs 为 hello:

    sed 's/docs/hello/g' package.json
    
  • 删除所有含有 @ 的行:

    sed '/@/'d package.json
    
  • 输出 20 - 23 行的内容:

    head -23 package.json | tail -3
    # or
    sed -n '20,23p' package.json
    
  • 修改 20 -23 行中 bugs 为 features:

    sed '2,3s/bugs/features/' package.json
    
  • 在第 5 行追加 hello world:

    sed '5a hello world' package.json
    
  • 输出第 5 行到第一个包含 docs 行之间的所有行:

    sed -n '5,/docs/p' package.json
    
  • 输出 5 - 10 行的内容到新的文件中:

    sed -n '5,10w test.txt' package.json
    cat test.txt # 验证
    

awk(列)

awk(Aho、Weingberger、Kernighan 三人姓名) 是一种编程语言,适用于处理数据和生成报告,进行更为复杂的处理。可以顺带了解下 cut。

awk 会自动给一行中的每个数据元素分配一个变量,默认情况下:

  • $0:代表整个文本行;
  • $1:代表文本行中的第 1 个数据字段;
  • $2:代表文本行中的第 2 个数据字段;
  • $n:代表文本行中的第 n 个数据字段;
  • $NF:代表文本行中的最后一个数据字段;
  • $(NF-1):代表文本行中的倒数第二个数据字段。

1. 命令格式

警告

awk [选项…] pattern{action} 文件

警告

awk 'BEGIN{ commands } pattern{ commands } END{ commands }'

2. 常用选项

选项含义
-F指定分隔符。
-f指定脚本文件。
-v在处理过程之前,初始化变量。

3. 示例

了解其基本使用即可。

  • 输出第一列内容:

    sed -n '1,5p' /etc/passwd | awk -F ":" '{print $1}'
    
  • 使用变量:

    echo | awk '{ var1="v1"; var2="v2"; var3="v3"; print var1"="var2"="var3; }'
    
  • 输出 20 - 23 行的行号及内容:

    awk 'NR>19&&NR<24 {print NR,$0}' package.json
    # or
    awk 'NR=20,NR=21,NR=22,NR=23 {print NR,$0}' package.json
    
  • 输出含有 docs 的行:

    awk '/docs/' package.json
    
编辑文档!
上次更新:
贡献者: shanyuhai123
Prev
花里胡哨且实用的命令
Next
如何启用硬盘