码迷,mamicode.com
首页 > 系统相关 > 详细

Shell工具(cut,sed)

时间:2021-04-22 16:20:19      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:提取   删除文件   shell   自定义   第一个   字段   bash   数据   cas   

Shell工具

cut:可以切割提取指定列\字符\字节的数据

cut可以将文本按列进行划分的文本处理,cut命令逐行度入文本,然后按列划分字段并进行提取,输出等操作

选项参数:

-f 提取范围 列号,获取第几列

-d 自定义分隔符 自定义分隔符,默认为制表符

-c 提取范围 以字符为单位进行分割

-b 以字节为单位进行分割,这些字节位置将忽略多字节字符边界,除非也指定了-n标志

-n    与-b选项连用,不分割多字节字符

提取范围:

n-  

n-m 

-m 

n1,n2,...

cut1.txt:

AA  it ll 11 xx

BB  itc 22 xxx

CC  shell 33 xxx

DD  itk 44 xxxx

//按照" "分割提取第一列和第三列

cut cut1.txt -d " " -f 1,3

AA it

BB itc 2

CC she

DD itk

//按照" "分割提取第二列之后

cut cut1.txt -d " " -f 2-

 it ll 11 xx

 itc 22 xxx

 shell 33 xx

 itk 44 xxxx

//提取前两个字符

cut cut1.txt -c 1-2

AA

BB 

CC 

DD

//提取前三个字节(utf-8 n一个字母占一个字节,一个汉字占三个字节)

echo "abc长治" | cut -b 1-3

结果:abc

 

//-n多字节不被截断

echo "abc长治" | cut -nb 1-3

结果:abc长

//将有itk的行按" "切割,提取第三列(提取指定单词数据)

 cat cut1.txt | grep itk | cut -d " " -f 3

//获取bash进程信息

ps -aux | grep bash

//切割提取bash进程的PID号(head -n 1:第一行)

ps -aux | grep bash | head -n 1 | cut -d " " -f 8

//切割提取IP地址

ifconfig | broadcast | cut -d " " -f 10

sed:编辑文件

sed.txt

ABC

itk itk

123

itk

向文件中添加数据:

//在第三行后添加数据(指定行号添加数据)

sed -i ‘3hello‘ sed.txt (-i:插入)

ABC

itk itk

123

3hello

itk

//"3i"->在第三行前添加hello数据

sed -i ‘3ihello‘ sed.txt(i:目标行前一行)

//含有"itk"行的前一行添加hello数据指定内容后添加数据

sed ‘/itk/ihello‘ sed.txt

//含有"itk"行的后一行添加hello数据指定内容后添加数据

sed ‘/itk/ahello‘ sed.txt(a:目标行后一行)

//在最后一行前添加数据($->代表最后一行)

sed ‘$ahello‘ sed.txt

//在最后一行后添加数据

sed ‘$ihello‘ sed.txt

删除文件中的数据:

//删除第二行数据(d:删除)

sed ‘2d‘ sed.txt

//从第一行开始删除,每隔两行就删掉一行(删除奇数行数据)

sed ‘1~2d‘ sed.txt

//删除前三行数据(删除指定范围的多行数据)

sed ‘1,3d‘ sed.txt

 

//删除指定范围取反的多行数据

sed ‘1,3!d‘ sed.txt

//删除最后一行数据

sed ‘$d‘ sed.txt

//删除匹配"itk"的行

sed ‘/itk/d‘ sed txt

//删除匹配行到最后一行

sed ‘/itk/,$d‘ sed.txt

//删除匹配行及其后面一行

sed ‘/itk/,+1d‘ sed txt

//删除不匹配的行(删除没有itk或者123的行)

sed ‘/itk\|123/!d‘ sed.txt

更改文件中的数据:

//将文件第一行数据修改为hello(c:修改)

sed ‘1chello‘ sed.txt

//把itk修改为hello

sed ‘/itk/chello‘ sed.txt

//将最后一行修改为hello($:最后一行)

sed ‘$chello‘ sed.txt

//把第一个itk替换成hello(s:替换)

sed ‘s/itk/hello/‘ sed.txt

//将全局的itk替换成hello(g:全局)

sed ‘s/itk/hello/g‘ sed.txt

//把第二个itk替换成hello

sed ‘s/itk/hello/2‘ sed.txt

//将修改那行写入文件(w:写入文件)

sed ‘s/itk/hello/2w sed2.txt‘ sed.txt

//只输出匹配那行(-n:查询  p:打印)

sed -n ‘s/itk/hello/2pw sed2.txt‘ sed.txt

//在有i的行里,替换该行中t后面的所有内容(正则表达式的匹配替换)

sed ‘/i/s/t.*//‘ sed.txt

//每行末尾拼接test(&:拼接)

sed ‘s/$/& test/‘ sed.txt

//每行行首添加注释

sed ‘s/^/&#/‘ sed.txt

查询文件或管道中的数据:

//查询含有itk的行的数据

sed -n ‘/itk/p‘ sed.txt

//管道过滤查询

ps -aux | grep sshd

ps -aux | sed -n ‘/sshd/p‘

多个sed命令执行:

//删除第一行并且将itk替换成oi

sed -e ‘1d‘ -e ‘s/itk/oi/g‘ sed.txt

sed ‘1d;s/itk/oi/g‘ sed.txt

 

Shell工具(cut,sed)

标签:提取   删除文件   shell   自定义   第一个   字段   bash   数据   cas   

原文地址:https://www.cnblogs.com/fddd/p/14687472.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!