Shell 脚本攻略-文本操作

grep

  • --color=auto 会高亮匹配的关键字
  • -o 只显示匹配的关键字
  • -n 显示行号
  • grep -Eegrep 都是按照正则匹配
  • -l 只显示匹配的文件名称
  • -A num 打印匹配行的后 num 行,-B num 打印匹配行的前 num 行,-C num 打印匹配行的前后 num 行

cut

  • -f num 输出以空格分隔的第 num 列
  • -d"char" 以 "char" 替换默认的制表符为列的分隔符
  • -c 指定字符的宽度

sed

  • sed -i 's/pattern/replace/g' filename 文本替换
  • sed -i '/pattern/d' filename 会删除匹配的
  • sed -i 's/pattern/[&]/g' & 表示所有的匹配
  • sed -i s/\(pattern1\)\(pattern2\)/\1 \2/g \1 \2 分别表示子匹配

awk

  • awk 'BEGIN{ print "start"} pattern { commands } END{ print "end"}' filename
    1. 首先执行 BEGIN 块
    2. 再遍历每一行,执行 pattern { commands }
    3. 最后执行 END 块
  • NR 表示当前行号
    NF 表示当前行有多少个通过空格划分的单词
    $0 表示当前行所有字符
    $1 表示第一个单词
    $2 表示第二个单词
  • -v var=$extern_var 导入外部变量
  • -F: 指定分隔符
  • 可以通过 getline 显示读取一行

文本切片和替换

Script

#!/bin/bash
var="hello world ~"
shell=${var/world/shell}
echo $var
echo $shell

echo ${var:6:5}
echo ${var:(-1)}

Note

  • 切片的语法为 ${var:start_position:length}
  • 最后一个位置的 position 可以用 (-1) 表示

你可能感兴趣的:(Shell 脚本攻略-文本操作)