shell_08--linux三剑客

1、sed命令

  Linux文本处理三剑客 之 sed
   sed stream EDite
      作为行编辑器,对文本进行编辑(以行为单位进行编辑)
      注意:sed编辑文件,不改变原文件
   sed工作原理:
        指定一个文本文件,依次读取文本文件中每行的内容,读取到模式空间中(PATTERN SPACE),在模式空间中进行匹配(正则表达式),对匹配后的内容进行修改(替换,删除,打印,保存等等)

  用法:
     sell [OPTIONJ.. {script- only-if-no-other-script [input. fl]..
     sed[参数]“sed自己独立的用法格式的语句”[文本文件]
  常见选项:
     -r 指定使用扩展的正则表达式
        1、所有的都不要 2、
     -n 拒绝默认显示
     -e script
     -f 指定脚本文件
     -l 指定文本的换行长度
     -i 直接修改文件内容(不建议使用)

  地址定界方式:

1、直接匹配数值

sed -n '5p'filename

2、d-步长

sed -n '1,3p'filename

3、$指定行尾

sed -n '10,$p'filename

4、匹配正则表达式

sed -n '/k{5,}/,$p' filename

5、0,addr

addr可以为数字/$/正则表达式
sed -n '0,/k{5,}/p' filename

6、addr,+N

匹配addr行到addr后N行
sed -n '/fd/,+5p' filename

7、addr,~N

sed -n '1,~10p' filename

常见命令:

   p print 打印(默认在屏幕显示文件文本内容)建议和-n一起使用;
   c 替换行
      sed "/aaa/c A" filename      #将aaa替换w为A
   d 删除
      sed "/aaaa/d" filename
      sed "1,3d" filename
   n N 读取/添加 模式匹配到的行的下一行内容,再对其操作
   w 保存文件内容到一个新的文件
      sed "/pattern/w newfilename "oldfilename
      sed "/k/w b" a
   s 文本内容替换,默认替换模式空间匹配到的第一项
      语法格式:s/pattern/字符串/
          中间的/可以替换为任意一个特殊字符 例如: s### s@@@ s%%%
      g 全部匹配
      1 2 和正则表达式分组相同,实现反响引用;
         指定某一个匹配项替换或修改
      & 调用前面(PATTERN)的匹配的内容
      w
      p

  拓展:
     dirname --取出文件路径的路径部分
     basename --取文件路径的文件名部分
  sed高级应用
     模式空间 -- hode space "占有空间"
        h 把模式空间汇总的内容覆盖至保持空间中;
        H 把模式空间中的内容追加到保持空间中;
        g 从保持空间中取出内容至模式空间,覆盖至模式空间;
        G 从保持空间取出数据(内容)追加至模式空间;
        x 把模式空间和保持空间中的内容与保持空间中的内容进行互换操作
        n 表示读取匹配到的行的下一行读取匹配到的行的下-行至模式空间
        N 追加匹配到的行的下-行至模式空间
        d 删除模式空间中的行
        D 删除多行模式空间中的所有行

知识回顾

for
	for  变星 in 列表; do
		循环体
	done
	for((初始语句;判断语句;值变化语句)); do
		循环体
	done

case语句

case
	分支
	case 变量 in
	PAT1)
		执行语句
		;;
	PAT2)
		执行语句
		;;
	*)
		默认执行语句
		;;
	esac

while语句

循环
	格式:
	定义初始值
	while条件判断; do
		循环体
		值变化语句
	done
	其他两种特殊的语句格式:
	for i in $(cat tc/passwd &> /dev/null) 错误写法
	
	while read 变量;do
		循环体
	done<</path/filename
	
	死循环写法
	while true;do
		循环体
	done

打断循环

  break 跳出循环
   continue 跳出本次循环
   sleep 延长一定时间,继续向下执行命令

until
   循环
   与while用法相同
   区别:只有判断条件为False的时候,才会进入循环;

if语句

if 条件判断;then
		执行语句1
	fi
	---------------
	if 条件判断;then
		执行语句1
	else
		执行语句2
	fi
	---------------
	if条件判断; then
		执行语句1
	elif条件判断; then
		执行语句2
	elif条件判断; then
		执行语句3
	else
		执行语句4
	fi
	

  

原文地址:https://www.cnblogs.com/lzqitdl/p/11365560.html