Linux 的shell 编程
-记住三个命令的运用形式
grep ‘字符’ 文件
sed ‘命令’ 文件
awk ‘条件{命令}’ 文件
-死记一点,单引号内就是正则表达式的用法
1.grep 及正则查询
Linux 的 shell 编程
2.cut 操作
2.1 cut 查看
Linux 的 shell 编程
2.2 cut [选项] 文件名
选项:
-f 列号 :提取第几列
-d 分隔符 :按照指定分隔符分隔列
Linux 的 shell 编程
2.2.1cut命令的局限
df -h | cut -d " " -f 1,3
Linux 的 shell 编程
2.2.2 查询除去root 以外的
Linux 的 shell 编程
2.3 printf 命令
printf ‘输出类型输出格式’ 输出内容
输出类型:

  • %ns : 输出字符串,n是数字指代输出几个字符。
    -%ni : 输出整数。n是数字指代输出几个数字。
    -%m.nf : 输出浮点数。m和n是数字,指代输出的整数位数和小数位数
    如:%8.2f代表共输出8位数,其中2位是小数,6位是整数。
    输出格式:
  • \a : 输出警告声音;
  • \b : 输出退格键,也就是Backspace键
  • \f : 清除屏幕
  • \n :换行
  • \r : 回车,也就是Enter键
  • \t : 水平输出退格键,也就是Tab键
  • \v : 垂直退格键,也就是Tab键
    Linux 的 shell 编程
    2.3.1 printf ‘%s’ $ (cat student.txt)
    不调整输出格式
    printf ‘%s\t%s\t%s\t%s\n’ $(cat stu.txt)
    Linux 的 shell 编程
    2.4 awk ‘条件1{动作1}条件2{动作2}…’ 文件名
    条件(Pattern):
  • 一般使用关系表达式作为条件
  • x > 10判断变量x是否大于10
  • x >= 10 大于等于
  • x <= 10 小于等于
    动作(Action):
  • 格式化输出
  • 流程控制语句

在awk命令的输出中支持print和printf命令
print :print会在每个输出之后自动加入一个换行符(Linux默认没有print命令)
printf :printf是标准格式输出命令,并不会自动加入换行符,如果需要换行,需要手工加入换行符
2.4.1 BEGIN
awk ’ BEGIN{printf"hello baby \n"}{printf $2 “\t” “$4” “\n”}’ stu.txt
Linux 的 shell 编程
2.4.2END
awk ’ END{printf"hello baby \n"}{printf $2 “\t” “$4” “\n”}’ stu.txt
Linux 的 shell 编程
2.5 sed 命令
sed 是一种几乎包括所有的UNIX平台(包括Linux) 的轻量级流编辑器。sed主要是用来将数据进行选取、替换、删除、新增的命令。
sed [选项] ‘[动作]’ 文件名
-n :一般sed命令会把所有数据都输出到屏幕,如果加入此选择则只会把经过sed命令处理的行输出到屏幕。
-e :允许对输入数据应用多条sed命令编辑
-i :用sed的修改结果直接修改读取数据的文件,而不是由屏幕输出
动作:

  • a : 追加,在当前行添加一行或多行
  • c : 行转换,用c后面的字符串替换元数据行
  • i : 插入,在当期行前插入一行或者多行。
  • d : 删除,删除指定的行
  • p : 打印,输出指定的行
  • s : 字串转换,用一个字符串替换另一个字符串。格式为 “行范围s/旧字串/新字串/g” (和 vim 中的替换格式类似)。
    2.5.2 行数据操作
    sed ‘2p’ stu.txt
    #查看文件的第二行
    sed -n ‘2p’ stu.txt
    Linux 的 shell 编程
    sed ‘2,3d’ stu.txt
    删除第二行到第三行的数据,但不修改文件本身
    Linux 的 shell 编程
    sed ‘2a piaoliang jiushi renxing’ stu.txt
    在第二行后追加hello
    Linux 的 shell 编程
    sed ‘2i meinv’ stu.txt
    在第二行前插入两行数据
    Linux 的 shell 编程
    sed ‘2c piaoliang jiushi renxing’ stu.txt
    数据替换
    Linux 的 shell 编程
    2.5.3 字符串替换
    sed ‘2s/59/99/g’ stu.txt
    在第二行中,把59换成99
    Linux 的 shell 编程
    sed -i ‘2s/59/99/g’ stu.txt
    sed操作的数据直接写入文件
    Linux 的 shell 编程
    sed -e ‘s/youyou//g;s/abin//g’ stu.txt
    同时把"youyou" 和 abin 替换成空
    Linux 的 shell 编程

相关文章: