<!--一个博主专栏付费入口结束-->
<link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-d284373521.css">
<div id="content_views" class="markdown_views">
<!-- flowchart 箭头图标 勿删 -->
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
<path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path>
</svg>
<h2 id="cut"><a name="t0"></a>cut</h2>
cut [选项] 文件名
-f 列号 #提取第几列(分隔符默认为\t)
-d 分隔符 #指定分隔符
例如:
cut -f 2 a.txt #截取文件a.txt内容的第二列(列号从1开始)
cut -f 2,4 a.txt #截取文件a.txt内容的第二列和第四列
cut -d ":" -f 1,3 /etc/passwd #截取文件passwd文件的第1列和第三列,以:分割取其中的第一列和第三列
- 1
- 2
- 3
cut命令的局限:
( 提取系统盘使用率 )
df -h
df -h | grep "sda3" | cut -f 5 # 只能匹配出行所有内容,因为分隔符是空格,不是Tab
df -h | grep "sda3" | cut -d " " -f 5 # 无法匹配出想要的结果,因为分割符是严格匹配,如果实际内容分割符有两个空格,无法得出正确结果
- 1
- 2
- 3
- 4
printf
printf '输出类型 输出格式' 输出内容
输出类型:
%ns 输出字符串,n是数字,指代输出几个字符
%ni 输出整数。n是数字,指代输出几个数字
%m.nf 位数和小数位数。例如:%8.2f 代表输出8位数,其中2位是小数,6位是整数
输出格式:
\a 输出警告声音
\b 输出退格键,也就是BackSpace键
\f 消除屏幕
\n 换行
\r 回撤
\t 水平制表符
\v 垂直制表符
举例:
printf '%s %s %s\n' 1 2 3 4 5 6 #表示每三个位一组输出,并加换行符
printf '%s\t%s\t%s\t' $(cat a.txt) #表示以4列的形式输出
- 1
- 2
awk
awk的标准输出命令是printf,默认分割符是空格或制表符。(cut 命令不能在分割符是空格的字符串中截取列,只能是 制表符 或 具体的分割符。)
1. awk ‘条件1{动作1} 条件2{动作2} ’
文件名(如果条件1,执行动作1;如果条件2,执行动作2 )
条件(pattern):
一般使用关系表达式作为条件
x > 10 判断变量x是否大于10
x>=10 大于等于
x<=10 小于等于
- 1
- 2
- 3
- 4
动作(Action)
格式化输出
流程控制语句
- 1
- 2
举例
awk '{printf $2 "\t" $3"\n"}' user.txt
大括号前面没有条件,直接执行命令,这里的printf 是awk的命令,$2 提取文件第二列,$3 提取文件第三列,$0 提取所有列
df -h | awk '{print $1 "\t" $5 "\t" $6 "\t"}'
打印三列,这里的print是awk的命令,系统并没有print命令,所以只能在awk里使用;与printf的区别是:print会自动在行尾加换行符,而printf不会
df -h | grep sda3 | awk '{print $5}' | cut -d '%' -f 1
提取系统已使用硬盘空间,可以把结果赋给一个变量,判断是否大于某个值,进行报警
- 1
- 2
- 3
- 4
- 5
- 6
2. BEGIN:先执行一条多余的动作
awk 'BEGIN{print "this is a text"} {print $2 "\t" $3}' user.txt
3. END:用于在所有命令处理完之后执行
4. FS内置变量:用于定义分割符,如果需要手工定义分割符,一定要在分割符前面加BEGIN
awk 'BEGIN{FS=":"} END{print "this is end text"} {print $1 "\t" $3}' /etc/passwd
5. 关系运算符
cat user.txt | grep -v ID | awk '$4 > 18 {printf $2 "\n"}'
user.txt中不包含ID这行,提取满足条件为第四列值大于18的第二列
sed
sed [选项] '[动作]' 文件名 #说明:动作必须用引号引起来
选项:
-n 一般sed命令会把所有数据都输出到屏幕。如果加入此选择,则只会把经过sed命令处理的行输出到屏幕。
-e 允许对输入数据应用多条sed命令编辑
-i 用sed的修改结果直接修改读取的数据的文件,而不是修改屏幕输出
- 1
- 2
- 3
动作:
a\ 追加,在当前行后添加一行或多行。添加多行时除最后一行外,每行末尾需要用"\"代表数据未完结。
c\ 行替换,用c后面的字符替换原数据行,替换多行时除最后一行外,每行末尾需要用"\"代表数据未完结。
i\ 插入,在当前插入一行或多行,插入多行时,除最后一行外每行末尾需用"\"代表数据未完结。
d 删除,删除指定的行
p 打印,输出指定的行
s 字符串替换,用一个字符串替换另外一个字符串。格式为"行范围 s/旧字符串/新字符串/g"
- 1
- 2
- 3
- 4
- 5
- 6
sed可以接收管道符的输出结果
举例:
sed '2p' a.txt #输出第2行后,又把所有内容输出一遍
sed -n '2p' a.txt #只输出第二行
sed '2,4d' a.txt #删除第2到4行,只删除屏幕输出,不会更改文件本身的内容
sed '2a hello' a.txt #在第二行插入一行 hello
sed '2c no person' a.txt #用no person 替换第二行
sed '4s/99/55/g' a.txt #把第4行的99替换为55
sed -i '4s/99/55/g' a.txt #把第4行的99替换为55,修改的是原文件而不是屏幕输出
sed -i 's/99/55/g' a.txt #s前不加行号时表示替换整个文件中匹配的字符串
sed -e 's/Liming//g;s/Gao//g' a.txt #-e表示允许多个条件执行,把Liming替换为空,把Gao替换为空
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
sort
sort [选项] 文件名 #排序
选项:
-f 忽略大小写
-n 以数值型进行排序,默认使用字符串型排序
-r 反向排序
-t 指定分隔符,默认分隔符是制表符
-k n[,m] 按照指定的字段范围排序。从第n字段开始,m字段结束(默认到行尾)
- 1
- 2
- 3
- 4
- 5
wc
wc [选项] 文件名 #统计
选项:
-l 只统计行数
-w 只统计单词数
-m 只统计字符数
- 1
- 2
- 3
<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-b6c3c6d139.css" rel="stylesheet">
</div><div id="article_content" class="article_content clearfix" style="height: 1737px; overflow: hidden;">
<div class="article-copyright">
<span class="creativecommons">
<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">
</a>
<span>
版权声明:本文为博主原创文章,遵循<a href="http://creativecommons.org/licenses/by-sa/4.0/" target="_blank" rel="noopener"> CC 4.0 BY-SA </a>版权协议,转载请附上原文出处链接和本声明。 </span>
<div class="article-source-link2222">
本文链接:<a href="https://blog.csdn.net/ajfgurjfmvvlsfkjglkh/article/details/81122939">https://blog.csdn.net/ajfgurjfmvvlsfkjglkh/article/details/81122939</a>
</div>
</span>
</div>
<!--一个博主专栏付费入口-->
<!--一个博主专栏付费入口结束-->
<link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-d284373521.css">
<div id="content_views" class="markdown_views">
<!-- flowchart 箭头图标 勿删 -->
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
<path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path>
</svg>
<h2 id="cut"><a name="t0"></a>cut</h2>
cut [选项] 文件名
-f 列号 #提取第几列(分隔符默认为\t)
-d 分隔符 #指定分隔符
例如:
cut -f 2 a.txt #截取文件a.txt内容的第二列(列号从1开始)
cut -f 2,4 a.txt #截取文件a.txt内容的第二列和第四列
cut -d ":" -f 1,3 /etc/passwd #截取文件passwd文件的第1列和第三列,以:分割取其中的第一列和第三列
- 1
- 2
- 3
cut命令的局限:
( 提取系统盘使用率 )
df -h
df -h | grep "sda3" | cut -f 5 # 只能匹配出行所有内容,因为分隔符是空格,不是Tab
df -h | grep "sda3" | cut -d " " -f 5 # 无法匹配出想要的结果,因为分割符是严格匹配,如果实际内容分割符有两个空格,无法得出正确结果
- 1
- 2
- 3
- 4
printf
printf '输出类型 输出格式' 输出内容
输出类型:
%ns 输出字符串,n是数字,指代输出几个字符
%ni 输出整数。n是数字,指代输出几个数字
%m.nf 位数和小数位数。例如:%8.2f 代表输出8位数,其中2位是小数,6位是整数
输出格式:
\a 输出警告声音
\b 输出退格键,也就是BackSpace键
\f 消除屏幕
\n 换行
\r 回撤
\t 水平制表符
\v 垂直制表符
举例:
printf '%s %s %s\n' 1 2 3 4 5 6 #表示每三个位一组输出,并加换行符
printf '%s\t%s\t%s\t' $(cat a.txt) #表示以4列的形式输出
- 1
- 2
awk
awk的标准输出命令是printf,默认分割符是空格或制表符。(cut 命令不能在分割符是空格的字符串中截取列,只能是 制表符 或 具体的分割符。)
1. awk ‘条件1{动作1} 条件2{动作2} ’
文件名(如果条件1,执行动作1;如果条件2,执行动作2 )
条件(pattern):
一般使用关系表达式作为条件
x > 10 判断变量x是否大于10
x>=10 大于等于
x<=10 小于等于
- 1
- 2
- 3
- 4
动作(Action)
格式化输出
流程控制语句
- 1
- 2
举例
awk '{printf $2 "\t" $3"\n"}' user.txt
大括号前面没有条件,直接执行命令,这里的printf 是awk的命令,$2 提取文件第二列,$3 提取文件第三列,$0 提取所有列
df -h | awk '{print $1 "\t" $5 "\t" $6 "\t"}'
打印三列,这里的print是awk的命令,系统并没有print命令,所以只能在awk里使用;与printf的区别是:print会自动在行尾加换行符,而printf不会
df -h | grep sda3 | awk '{print $5}' | cut -d '%' -f 1
提取系统已使用硬盘空间,可以把结果赋给一个变量,判断是否大于某个值,进行报警
- 1
- 2
- 3
- 4
- 5
- 6
2. BEGIN:先执行一条多余的动作
awk 'BEGIN{print "this is a text"} {print $2 "\t" $3}' user.txt
3. END:用于在所有命令处理完之后执行
4. FS内置变量:用于定义分割符,如果需要手工定义分割符,一定要在分割符前面加BEGIN
awk 'BEGIN{FS=":"} END{print "this is end text"} {print $1 "\t" $3}' /etc/passwd
5. 关系运算符
cat user.txt | grep -v ID | awk '$4 > 18 {printf $2 "\n"}'
user.txt中不包含ID这行,提取满足条件为第四列值大于18的第二列
sed
sed [选项] '[动作]' 文件名 #说明:动作必须用引号引起来
选项:
-n 一般sed命令会把所有数据都输出到屏幕。如果加入此选择,则只会把经过sed命令处理的行输出到屏幕。
-e 允许对输入数据应用多条sed命令编辑
-i 用sed的修改结果直接修改读取的数据的文件,而不是修改屏幕输出
- 1
- 2
- 3
动作:
a\ 追加,在当前行后添加一行或多行。添加多行时除最后一行外,每行末尾需要用"\"代表数据未完结。
c\ 行替换,用c后面的字符替换原数据行,替换多行时除最后一行外,每行末尾需要用"\"代表数据未完结。
i\ 插入,在当前插入一行或多行,插入多行时,除最后一行外每行末尾需用"\"代表数据未完结。
d 删除,删除指定的行
p 打印,输出指定的行
s 字符串替换,用一个字符串替换另外一个字符串。格式为"行范围 s/旧字符串/新字符串/g"
- 1
- 2
- 3
- 4
- 5
- 6
sed可以接收管道符的输出结果
举例:
sed '2p' a.txt #输出第2行后,又把所有内容输出一遍
sed -n '2p' a.txt #只输出第二行
sed '2,4d' a.txt #删除第2到4行,只删除屏幕输出,不会更改文件本身的内容
sed '2a hello' a.txt #在第二行插入一行 hello
sed '2c no person' a.txt #用no person 替换第二行
sed '4s/99/55/g' a.txt #把第4行的99替换为55
sed -i '4s/99/55/g' a.txt #把第4行的99替换为55,修改的是原文件而不是屏幕输出
sed -i 's/99/55/g' a.txt #s前不加行号时表示替换整个文件中匹配的字符串
sed -e 's/Liming//g;s/Gao//g' a.txt #-e表示允许多个条件执行,把Liming替换为空,把Gao替换为空
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
sort
sort [选项] 文件名 #排序
选项:
-f 忽略大小写
-n 以数值型进行排序,默认使用字符串型排序
-r 反向排序
-t 指定分隔符,默认分隔符是制表符
-k n[,m] 按照指定的字段范围排序。从第n字段开始,m字段结束(默认到行尾)
- 1
- 2
- 3
- 4
- 5
wc
wc [选项] 文件名 #统计
选项:
-l 只统计行数
-w 只统计单词数
-m 只统计字符数
- 1
- 2
- 3
<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-b6c3c6d139.css" rel="stylesheet">
</div><div id="article_content" class="article_content clearfix" style="height: 1737px; overflow: hidden;">
<div class="article-copyright">
<span class="creativecommons">
<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">
</a>
<span>
版权声明:本文为博主原创文章,遵循<a href="http://creativecommons.org/licenses/by-sa/4.0/" target="_blank" rel="noopener"> CC 4.0 BY-SA </a>版权协议,转载请附上原文出处链接和本声明。 </span>
<div class="article-source-link2222">
本文链接:<a href="https://blog.csdn.net/ajfgurjfmvvlsfkjglkh/article/details/81122939">https://blog.csdn.net/ajfgurjfmvvlsfkjglkh/article/details/81122939</a>
</div>
</span>
</div>
<!--一个博主专栏付费入口-->
<!--一个博主专栏付费入口结束-->
<link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-d284373521.css">
<div id="content_views" class="markdown_views">
<!-- flowchart 箭头图标 勿删 -->
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
<path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path>
</svg>
<h2 id="cut"><a name="t0"></a>cut</h2>
cut [选项] 文件名
-f 列号 #提取第几列(分隔符默认为\t)
-d 分隔符 #指定分隔符
例如:
cut -f 2 a.txt #截取文件a.txt内容的第二列(列号从1开始)
cut -f 2,4 a.txt #截取文件a.txt内容的第二列和第四列
cut -d ":" -f 1,3 /etc/passwd #截取文件passwd文件的第1列和第三列,以:分割取其中的第一列和第三列
- 1
- 2
- 3
cut命令的局限:
( 提取系统盘使用率 )
df -h
df -h | grep "sda3" | cut -f 5 # 只能匹配出行所有内容,因为分隔符是空格,不是Tab
df -h | grep "sda3" | cut -d " " -f 5 # 无法匹配出想要的结果,因为分割符是严格匹配,如果实际内容分割符有两个空格,无法得出正确结果
- 1
- 2
- 3
- 4
printf
printf '输出类型 输出格式' 输出内容
输出类型:
%ns 输出字符串,n是数字,指代输出几个字符
%ni 输出整数。n是数字,指代输出几个数字
%m.nf 位数和小数位数。例如:%8.2f 代表输出8位数,其中2位是小数,6位是整数
输出格式:
\a 输出警告声音
\b 输出退格键,也就是BackSpace键
\f 消除屏幕
\n 换行
\r 回撤
\t 水平制表符
\v 垂直制表符
举例:
printf '%s %s %s\n' 1 2 3 4 5 6 #表示每三个位一组输出,并加换行符
printf '%s\t%s\t%s\t' $(cat a.txt) #表示以4列的形式输出
- 1
- 2
awk
awk的标准输出命令是printf,默认分割符是空格或制表符。(cut 命令不能在分割符是空格的字符串中截取列,只能是 制表符 或 具体的分割符。)
1. awk ‘条件1{动作1} 条件2{动作2} ’
文件名(如果条件1,执行动作1;如果条件2,执行动作2 )
条件(pattern):
一般使用关系表达式作为条件
x > 10 判断变量x是否大于10
x>=10 大于等于
x<=10 小于等于
- 1
- 2
- 3
- 4
动作(Action)
格式化输出
流程控制语句
- 1
- 2
举例
awk '{printf $2 "\t" $3"\n"}' user.txt
大括号前面没有条件,直接执行命令,这里的printf 是awk的命令,$2 提取文件第二列,$3 提取文件第三列,$0 提取所有列
df -h | awk '{print $1 "\t" $5 "\t" $6 "\t"}'
打印三列,这里的print是awk的命令,系统并没有print命令,所以只能在awk里使用;与printf的区别是:print会自动在行尾加换行符,而printf不会
df -h | grep sda3 | awk '{print $5}' | cut -d '%' -f 1
提取系统已使用硬盘空间,可以把结果赋给一个变量,判断是否大于某个值,进行报警
- 1
- 2
- 3
- 4
- 5
- 6
2. BEGIN:先执行一条多余的动作
awk 'BEGIN{print "this is a text"} {print $2 "\t" $3}' user.txt
3. END:用于在所有命令处理完之后执行
4. FS内置变量:用于定义分割符,如果需要手工定义分割符,一定要在分割符前面加BEGIN
awk 'BEGIN{FS=":"} END{print "this is end text"} {print $1 "\t" $3}' /etc/passwd
5. 关系运算符
cat user.txt | grep -v ID | awk '$4 > 18 {printf $2 "\n"}'
user.txt中不包含ID这行,提取满足条件为第四列值大于18的第二列
sed
sed [选项] '[动作]' 文件名 #说明:动作必须用引号引起来
选项:
-n 一般sed命令会把所有数据都输出到屏幕。如果加入此选择,则只会把经过sed命令处理的行输出到屏幕。
-e 允许对输入数据应用多条sed命令编辑
-i 用sed的修改结果直接修改读取的数据的文件,而不是修改屏幕输出
- 1
- 2
- 3
动作:
a\ 追加,在当前行后添加一行或多行。添加多行时除最后一行外,每行末尾需要用"\"代表数据未完结。
c\ 行替换,用c后面的字符替换原数据行,替换多行时除最后一行外,每行末尾需要用"\"代表数据未完结。
i\ 插入,在当前插入一行或多行,插入多行时,除最后一行外每行末尾需用"\"代表数据未完结。
d 删除,删除指定的行
p 打印,输出指定的行
s 字符串替换,用一个字符串替换另外一个字符串。格式为"行范围 s/旧字符串/新字符串/g"
- 1
- 2
- 3
- 4
- 5
- 6
sed可以接收管道符的输出结果
举例:
sed '2p' a.txt #输出第2行后,又把所有内容输出一遍
sed -n '2p' a.txt #只输出第二行
sed '2,4d' a.txt #删除第2到4行,只删除屏幕输出,不会更改文件本身的内容
sed '2a hello' a.txt #在第二行插入一行 hello
sed '2c no person' a.txt #用no person 替换第二行
sed '4s/99/55/g' a.txt #把第4行的99替换为55
sed -i '4s/99/55/g' a.txt #把第4行的99替换为55,修改的是原文件而不是屏幕输出
sed -i 's/99/55/g' a.txt #s前不加行号时表示替换整个文件中匹配的字符串
sed -e 's/Liming//g;s/Gao//g' a.txt #-e表示允许多个条件执行,把Liming替换为空,把Gao替换为空
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
sort
sort [选项] 文件名 #排序
选项:
-f 忽略大小写
-n 以数值型进行排序,默认使用字符串型排序
-r 反向排序
-t 指定分隔符,默认分隔符是制表符
-k n[,m] 按照指定的字段范围排序。从第n字段开始,m字段结束(默认到行尾)
- 1
- 2
- 3
- 4
- 5
wc
wc [选项] 文件名 #统计
选项:
-l 只统计行数
-w 只统计单词数
-m 只统计字符数
- 1
- 2
- 3
<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-b6c3c6d139.css" rel="stylesheet">
</div>v