Linux三剑客 grep awk sed 指令的作用与解析

grep

  • 作用: 用 字符串或正则 匹配 文件/标准输入(按行匹配) 并输出被匹配的字符串所在行

    grep [options] pattern [files ...]
    pattern: 匹配的规则, 可以是字符串也可以是正则表达式
    files: 指定查找的一个或多个文件,若未指定文件,则从标准输入中查找
    
    --option--
    -i 忽略大小写
    -v 反转匹配,0-,只打印不符合匹配规则的行
    -n 显示匹配行的行号
    -r 递归查找(当给出的files是目录时使用)
    -l 只打印匹配的行所在文件名
    -c 只打印匹配的行数量
    -a 不忽略二进制数据(默认忽略)

awk

  • 作用: 接收 文本文件的内容/标准输入 用脚本处理后进行输出

    awk [options] 'pattern {action} ...' [file,...]
    作用: awk会将 文本文件/标准输入 的每一行依次传给pattern, 若符合pattern, 再传给action进行执行
    
    -- option --
    -F <分隔符>: 指定分隔字段的分隔符, 默认为空格
    -v <变量名>=<值>: 设置awk内变量的值(可以在'pattern {action}'中调用)
    -f <脚本文件>: 指定awk脚本文件并执行
    
    -- 内建变量 --
    简介: awk本身就有的变量, 可在pattern和action中使用 (非内建变量无需$)
    $n: 代表该行的第n个字段 (字段间由FS分隔)
    $0: 代表完整的行
    NF: 代表当前行的字段数
    
    FS: 字段分隔符 (默认是空白符, 可用-F 选项更换)
    OFS: 输出字段分隔符,输出多个字段时的字段之间的分隔符 (默认值是空白符)
    
    RS: 行分隔符,awk用其来判别 从哪到哪是一行 (默认为换行符, 若RS为空时则 文件/标准输入 会被认为是一整行)
    ORS: 输出行分隔符,输出多个行的处理结果时的分隔符 (默认为换行符)
    
    ARGC: 命令行参数的数目
    ARGIND: 命令行中 代表 当前处理的文件 的参数 所在命令行参数的位置 (从0开始算)
    ARGV: 包含命令行参数的数组
    
    FILENAME: 当前处理的文件名
    FNR: 当前文件已经读取的行数(从1开始,会在文件切换时重置) 
    NR: 所有文件已经读取的行数(从1开始,不会在文件切换时重置)
    
    IGNORECASE: 如果为1,则进行忽略大小写的匹配 (默认为0)
    
    -- pattern --
    pattern: 可以是 条件表达式 或 正则表达式, 用于决定是否对当前行执行action (若省略, 则对所有行进行action)
    条件表达式: 
    逻辑运算符有 && || !   关系运算符有 < <= > >= != ==
    正则表达式: 
    格式: /regex/   正则要被//包围 
    特殊格式: 可用 <变量>~/regex/ 或 <变量>!~/regex/ 来用正则匹配变量(~代表匹配正则,!~代表不匹配正则)
    单独用 /regex/ 与 $0~/regex/ 效果相同
    范围匹配:
    <pattern1>,<pattern2> 指匹配 从成功匹配<pattern1>的行开始 到 成功匹配<pattern2>的行结束 的所有行
    (包括开始行与结束行)
    
    -- action --
    {action}: 是在匹配到模式的行上执行的动作 (若省略,则默认动作是打印整行)
    多个语句: 若action中包含多个语句, 用;隔开 (最后一个语句无需以;结尾)
    可执行操作:
    打印: print <变量或值>,...
    运算: 使用运算符 + - * / % 
    赋值: 使用=  +=  -=  *=  /=  %=  ^=  **=给变量赋值
    删除变量: delete <变量>
    自加自减: <变量>++ <变量>-- ++<变量> --<变量>
    -- pattern 与 action --
    一个awk 不止可以有一个 pattern 与 一个 {action}, 可以用空格将多个pattern与action分隔开来
    
    特殊pattern
    BEGIN{begin_action} 和 END{end_action}:
    BEGIN{begin_action}:在开始处理文件之前先执行{begin_action}
    END{end_action}:在处理完文件之后执行{begin_action}
    pattern? {action1} : {action2}
    符合pattern的行传入action1, 不符合的传入action2
  • AWK 工作原理
  • AWK 数组
  • AWK 条件语句与循环
  • AWK 用户自定义函数
  • AWK 内置函数
  • 8 个有力的 Awk 内建变量
  • AWK 官方手册

sed

  • 作用: 利用脚本 编辑与处理 文本文件/标准输入, 并输出更改后的结果 (不更改文件)

    sed [option] [file,...]
    
    -- option --
    -e <script> 以选项中指定的script字符串来处理输入的文本文件
    -f <script> 以选项中指定的script文件来处理输入的文本文件
    -n 仅显示script处理过的行(默认输出所有行)
    -i 直接更改文件内容,而非输出更改后的结果(默认是不会更改文件的)
    
    -- script --
    s/<匹配模式>/<替换内容>/<标志> 
    作用: 将每行第一个被 <匹配模式> 匹配的字符串 替换为 <替换内容>
    匹配模式: 可以是字符串,也可以是正则表达式
    标志: 
    g: 全局替换 (替换所有被匹配到的字符串)
    i: 不分大小写
    
    /<匹配模式>/p
    作用: 打印所有被 <匹配模式> 匹配的字符串 所在的行
    匹配模式: 可以是字符串,也可以是正则表达式
    
    /<匹配模式>/d
    作用: 删除所有被 <匹配模式> 匹配的字符串 所在的行
    匹配模式: 可以是字符串,也可以是正则表达式
    
    /<匹配模式>/a <string>
    作用: 在所有被 <匹配模式> 匹配的字符串 所在的行 后追加字符串<string>
    匹配模式: 可以是字符串,也可以是正则表达式
    
    /<匹配模式>/i <string>
    作用: 在所有被 <匹配模式> 匹配的字符串 所在的行 前插入字符串<string>
    匹配模式: 可以是字符串,也可以是正则表达式
    
    y/字符集1/字符集2/
    作用: 将 字符集1 中所有字符替换为 字符集2 中对应字符
    字符集: 如y/abc/xyz/
    注: 字符集1 中字符要与 字符集2 中字符一一对应
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇