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不能被{}包裹着.