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

 

©著作权归作者所有:来自51CTO博客作者mb6066e453ca35b的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. python学习随笔-数据类型
  2. 其他空间类的引用,别名引用,自动加载类,数据库的简单操作
  3. 基于Go语言构建的万亿级流量大数据平台架构|文末彩蛋
  4. 开源数据库MySQL DBA运维实战
  5. 争议 | 银行一定要上分布式数据库吗?有没有其他技术路线满足需求?
  6. DML(data manipulation language)
  7. 【实战案例】Ajax请求第三方接口数据利用模板引擎渲染天气预报页
  8. 如何恢复Cephfs数据
  9. UNI使用蓝牙连接设备传输数据

随机推荐

  1. 假装网络工程师28——MPLS跨AS通信option
  2. 如何创建高可用性系统[每日前端夜话0xA2]
  3. Python3版本下创建计算给定日期范围内工
  4. PWA – 渐进式Web应用:你需要知道的一切[
  5. 超越 Cookie:当今的浏览器端数据存储方案[
  6. 坚持
  7. Vugu:后端要抢前端程序员的饭碗了?[每日前
  8. 啊这
  9. 怎样编写更好的 JavaScript 代码[每日前
  10. Maven设置utf8编码格式