Linux shell 重定向和简单正则(二)

业精于勤,荒于嬉,行成于思,毁于随
数据流重定向
  • 标准输入(stdin) #其代码为0 标志为“<” "<<"是输入结束
    [zhang@MyaliyunHost ~]$ cat > t1 < t
    [zhang@MyaliyunHost ~]$ cat t1
    Hello everybady!
    [zhang@MyaliyunHost ~]$ cat > t1 << t #后面的t为输入结束标志
    > fff
    > wefa
    > asfdsjal
    > djslkf
    > t
    [zhang@MyaliyunHost ~]$ cat t
    Hello everybady!
    [zhang@MyaliyunHost ~]$ cat t1
    fff
    wefa
    asfdsjal
    djslkf
    
  • 标准输出(stdout) #其代码为1 标志为“>”或“1>” ">>“或"1>>”
     [zhang@MyaliyunHost ~]$ echo aaabbb > t
     [zhang@MyaliyunHost ~]$ cat t
     aaabbb
     [zhang@MyaliyunHost ~]$ echo ccccsda >> t
     [zhang@MyaliyunHost ~]$ cat t
     aaabbb
     ccccsda
    
  • 标准错误输出(stdout) #其代码为2 标志为“2>” “2>>”
    [zhang@MyaliyunHost ~]$ ls skdjfl 2> t
    [zhang@MyaliyunHost ~]$ cat t
    ls: cannot access skdjfl: No such file or directory
    [zhang@MyaliyunHost ~]$ ls aaaaa 2>> t
    [zhang@MyaliyunHost ~]$ cat t
    ls: cannot access skdjfl: No such file or directory
    ls: cannot access aaaaa: No such file or directory
    
    /dev/null 垃圾桶黑洞装置,可以把没用的信息定向到/dev/null
    管道指令“|” #对前一个命令输出结果再次处理
    前一个命令的标准输出作为下一个命令的标准输入

选取指令

  • cut
    常用格式 cut [-df] [file] 或者 cut [-c] [file]
    -d:自定义分隔符,默认为制表符 (TAB)
    -f:与-d一起使用,指明显示那个区域
    -c:声明用那种字符分割
    ** 更高级的分割有awk与printf格式控制输出
  • grep指令
  • 双重定向
  • wc 统计指令

命令执行控制符号&&与 ||
&&逻辑与的意思 command1 && command2 #命令1成功执行命令2
||逻辑或 command1 || command2 #命令1失败执行命令2

排序命令:

  • sor

  • wc [- lwm]
    -l :仅列出行;
    -w :仅列出多少字(英文单字);
    -m :多少字符;

  • uniq 仅列出一个显示

tee双重定向 可以定向到屏幕 然后定向到屏幕
-a 累加的方式
字符转换命令: tr, col, join, paste, expand

  • tr xxx可以用来删除一段讯息当中的文字,或者是进行文字讯息的替换
    -d :删除讯息当中的 xxx 这个字符串;
    -s :取代掉重复的字符
  • join 处理两个文件之间的数据,主要是在处理两个文件,有 " 相同数据" 的那一行,才将他加在一起
  • paste
    处理两个文件的数据相关性, paste 直接将两行贴在一起,且中间以 [tab] 键隔开而已
  • expand 在将 [tab] 按键转成空格键

分区命令: split 将一个大文件,依据文件大小或行数来分区
参数代换: xargs 很多指令并不支持管线命令,因此我们可以透过 xargs 来提供该指令引用 standard input 之用。
不小心按了 [crtl]+s 则画面会被冻结。你可以使用 [ctrl]+q 来解除冻结
[crtl]+u 可以删除签名输入的字符、

正则表达式
正规表示法就是处理字符串的方法,以行为单位来进行字符串的处理行为, 正规表示式透过一些特殊符号的辅助,可以轻易的达到『搜寻/删除/取代』某特定字符串的处理程序!

sed工具与正则表达式
sed工具sed可以将数据进行取代、删除、新增、等等的功能
sed [- nefri] [ 动 作]

  • -n 以行为单位的新增/ 删除功能
  • -e :直接在指令列模式上进行 sed 的动作编辑
  • -f :直接将 sed 的动作写在一个文件内
  • -i 选项可以 直接去修改后面接的文件内容
  • a :新增, a 的后面可以接字符串,而这些字符串会在新的一行出现
  • c 以行为单位的取代与显示功能.
  • p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运作
  • 部分数据的搜寻并取代的功能
    sed ‘s/要被取代的字符串/ /新的字符串/g’
    s :取代
    ifconfig eth0 |grep 'inet ' | sed 's/^.*inet//g'|sed 's/ *netmask.*$//g'
    
    获取网卡地址
    sed还可以直接修改文件内容。

延伸正规表示法

  • +重复一个或一个以上的前一个 RE 字符
  • ?零个或一个的前一个 RE 字符
  • | 用或 or 的方式找出数个字符串
  • () 找出群组字符串
  • ()+ 多个重复群组的判别

egrep -v ‘$|#’ 去掉#开头 和空白行

文件的格式化处理
格式化打印 printf 和C语言printf输出类似

awk数据处理工具。
awk运行模式
awk ’ 条 件 类型 型 1{ 动作 作 1} 条 件 类型 型 2{ 动作 作 2} …’ filename
awk 是以行为一次处理的单位,而以字段为最小的处理单位
awk内建变量

  • NF 每一行 ($0) 拥有的字段总数
  • NR 目前 awk 所处理的是『第几行』数据
  • FS 目前的分隔字符,默认是空格键
    awk 变量从第二行开始 可以用 BEGIN预先定义变量。
    awk 的逻辑运算字符
    运算单元 代表意义

> 大于
<小于
=大于或等于
<=小于或等于
==等于
!=不等于

awk动作内{}支持if语句
还可以进行循环计算

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值