一、这篇博客主要介绍字符截取命令
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。
三、总结
多多练习就可以掌握了,或者说先了解这些内容,把常用的命令掌握了就好,其他的命令等用到再查也行,到时候自然会掌握的。