shell_进阶命令使用

=====================【进阶命令】=====================
grep 查找


sed 编辑

  Linux sed命令完全攻略(超级详细):http://c.biancheng.net/view/4028.html

  sed命令操作:https://www.runoob.com/linux/linux-comm-sed.html

 

awk 数据分析并生成报告
  把文件逐行地读入,已空格为默认分割符将每行切片;
  awk工作流程是这样的:读入有'\n'换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域,
  $0则表示所有域,$1表示第一个域,$n表示第n个域。默认域分隔符是"空白键" 或 "[tab]键"  

  linux awk命令详解:https://blog.csdn.net/weixin_41477980/article/details/89511954
  linux awk命令详解:https://zhang.ge/1939.html
  linux三剑客之awk命令:https://www.cnblogs.com/ginvip/p/6352157.html
  awk简明教程:https://coolshell.cn/articles/9070.html

  linux awk命令详解:https://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858470.html


tr命令:

find命令:

xargs命令:

wc //统计
说明:利用wc指令我们可以计算文件的Byte数、字数、或是列数,若不指定文件名称、或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据。
格式:[-clw][--help][--version][文件...]
参数:
-c或--bytes或--chars 只显示Bytes数。
-l或--lines 显示行数。
-w或--words 只显示字数。

=====================【常用操作】========================
find . -name "*up.bin" | wc -l  //可以获知find的文件有几个

======================================================================
sed使用方法:

sed s 替换   //替换某行中的内容
    [address]s/pattern/replacement/flags    //关于指定具体操作行(address)的用法

sed d 删除   

sed a 和 i  //a在指定行的后面附加一行,i命令表示在指定行的前面插入一行

sed c       //c 命令表示将指定行中的所有内容,替换成该选项后面的字符串
    [address]c\用于替换的新文本

sed y       //y 转换命令是唯一可以处理单个字符的 sed 脚本命令  
    [address]y/inchars/outchars/
    转换命令会对 inchars 和 outchars 值进行一对一的映射,即 inchars 中的第一个字符会被转换为 outchars 中的第一个字符,
    第二个字符会被转换成 outchars 中的第二个字符...这个映射过程会一直持续到处理完指定字符

sed p 打印脚本命令    //p 命令表示搜索符号条件的行,并输出该行的内容
    [address]p

address 用来表明该脚本命令作用到文本中的具体行    
    默认情况下,sed 命令会作用于文本数据的所有行。如果只想将命令作用于特定行或某些行,则必须写明 address 部分
    表示的方法有以下 2 种
        以数字形式指定行区间        //sed 会将文本流中的第一行编号为 1,然后继续按顺序为接下来的行分配行号
        用文本模式指定具体行区间
    命令格式:
        [address]脚本命令
        address {
            多个脚本命令
        }


sed命令常用到的两个选项:
-i : 直接在文件上编辑 (edit files in place)
-e[默认选项]:只在命令行输出,而文件不改变
(add the script to the commands to be executed)
注:使用sed命令可以使用 -i 或者 -e 选项(以下例子仅以-i举例)

sed命令删除特定行号
删除第N行
sed -i 'Nd' filename

删除第N~M行
sed -i 'N,Md' filename # file的[N,M]行都被删除

删除shell变量表示的行号(配合for等语句使用)
sed -i "${var1},${var2}d" filename # 这里引号必须为双引号

删除最后一行
sed -i '$d' filename


删除包含"xxx"的行
sed -i '/xxx/d' filename

======================================================================
awk使用方法:
    awk '{pattern + action}' {filenames}
    一行就是一个记录,一个记录有若干个字段;
    换行符是记录分隔符;字段分隔符
    $0表示整行,$1表示第一个字段,以此类推
    NF 字段数量
    NR 记录数量
    -F参数:指定分隔符,可指定一个或多个

    首先, 要记住, 凡是被 {} 包裹的, 就是 action, 或者说, action 必然被 {} 包裹着
    凡是没有被{}包裹的, 就是pattern, 或者说pattern不能被{}包裹着.

 



posted @ 2021-10-25 19:51  Grooovvve  阅读(87)  评论(0编辑  收藏  举报