Linux系统Shell基础之字符截取命令

一、这篇博客主要介绍字符截取命令
1、cut 字段提取命令,2、printf 命令,3、awk 命令,4、sed 命令。

场景模拟提前准备一个测试文件:student.txt,用来存放测试数据,使用 Vim编辑器准备这个测试文件,如下图:
①、vim student.txt
在这里插入图片描述
②、编辑如下内容:
在这里插入图片描述
注意:测试文件的空格使用【Tab】键,因为 cut 命令默认是截取的字符是【Tab】键。

二、cut 字段截取命令
1、 cut 【选项】【文件名】,功能:截取字符串的特定字符。
{ -f 列号:提取第几列,-d 分隔符: 按照指定分隔符来分割列 }

【1】cut -f 2 student.txt,功能:截取student.txt文件中以【Tab】键为分隔符的第二列的字符,如下图所示:
在这里插入图片描述
【2】cut -d “:” -f 1,3 /etc/passwd,功能:截取 /ect/passwd 文件中以 : 键为分隔符的第1列,第3列的字符,如下图所示:
在这里插入图片描述
2、 printf “输出类型输出格式” 【输出的内容】
输出类型:
①、%ns: 输出字符串,n代表输出几个字符。
②、%ni: 输出整数,n代表输出几个整数。
③、%m,nf: 输出浮点数,m代表输出的数一共有多少位数,n代表输出的小数位数,例如 %8.2f 表示一共输出8个数,其中有2为小数,6为整数。

下面举几个例子:
【1】printf ‘%s %s %s\n’ 1 2 3 4 5 6
在这里插入图片描述
【2】printf ‘%i\n’ 123 456
在这里插入图片描述
【3】printf ‘%8.2f\n’ 123456.789
在这里插入图片描述
3、awk ‘条件1{动作1} 条件2{动作2}… ’ 【文件名】
【1】awk ‘{printf $2 “\t” $3 “\n”}’ student.txt,功能:输出 student.txt 文件中第2列,第3列的内容, $ 2, $3代表列数,“ \t ”代表Tab键,“ \n ”代表换行。
在这里插入图片描述
【2】 awk ‘BEGIN{printf “这是BEGIN!”}{printf $2 “\t” $3 “\n”}’ student.txt,功能:在输出student.txt文件中的第2列,第3列之前输出 " 这是BEGIN!"语句。
在这里插入图片描述
【3】awk ‘END{printf “这是END” “\n”}{printf $2 “\t” $3 “\n”}’ student.txt,功能:在输出student.txt文件中的第2列,第3列之后输出 " 这是END!"语句。
在这里插入图片描述
4、sed 【选项】’{动作}’ 【文件名】
选项:
①、-n:只会把经过 sed 命令处理行输出到屏幕。(一般都要用到)
②、-e:允许对输入数据应用多条sed 命令进行处理。
③、-i:用sed命令修改结果会直接修改到文件,而不是由屏幕输出。(建议不要使用,如果想改文件的话还是使用Vim编辑器比较好)

动作:
①、-d:删除功能,删除指定行。
②、-p:打印功能,输出指定行。
③、-s:字符替换,用一个字符替换另外一个字符,格式->“行范围 s / 旧字符 / 新字符 / g”。
④、-a:在当前的行的下一行追加指定字符。
⑤、-i:在当前的行首插入指定字符。
⑥、-c:替换当前行的所有内容为指定的内容。

下面举几个例子:
【1】 sed -n ‘3p’ student.txt ,功能:获取 student.txt 文件中的第3行的内容。
在这里插入图片描述
【2】sed ‘1,3d’ student.txt,功能:删除文件1到3行的内容并且输出结果,但是并不改变 student.txt的内容,即重新打开 student.txt文件,文件内容没有发生改变。
在这里插入图片描述
【3】 sed ‘3a HelloWorld’ student.txt,功能:在 student.txt的第3行的下一行追加一个HelloWorld。
在这里插入图片描述
【4】sed ‘3i HelloWorld’ student.txt,功能:在 student.txt的第3行的上一行追加一个HelloWorld。
在这里插入图片描述
【5】sed ‘3c HelloWorld’ student.txt,功能:将student.txt的第3行的全部内容替换成 HelloWorld。
在这里插入图片描述
【6】sed ‘5s/B/BB/g’ student.txt,功能:将 student.txt 文件中第5行的内容为B的旧字符替换成新字符BB。
在这里插入图片描述
三、总结
多多练习就可以掌握了,或者说先了解这些内容,把常用的命令掌握了就好,其他的命令等用到再查也行,到时候自然会掌握的。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值