本文讲的字符串提取指的是从文件或某个输出中提取符合条件的列的内容,如果某个文件或输出中它的每一行的信息都是使用特定的分隔符来分割的话,就可以使用字符串的提取功能,本文涉及到的命令包括cut、printf、awk、sed等。
cut命令
cut [选项] 文件名:在文件中提取符合条件的列。
选项:
示例:“cut -d ":" -f 1,3 /etc/passwd”表示使用分号作为分隔符分割文档后提取第一列和第三列的内容。
printf格式化输出
平常使用字符串输出时使用cat或echo命令即可,printf命令只是在awk编程中比较常用,在平常的使用中并不常用。awk编程中,会有print命令和printf命令,但是printf是linux的标准输出命令,但是它默认没有输出换行符,而print在linux命令中是没有的,且默认会自动输出换行符。
printf "输出类型和格式" 输出内容:格式化输出字符串(使用单引号或者双引号都行)。
输出类型:
输出格式:
awk命令
awk命令因为功能强大且复杂,所以通常也称为awk编程,但是它的作用也是用来提取指定的列。
awk命令可以自动识别空格分隔的字符串(即使每列分隔的空格数不同也行),但cut命令就不可以。
awk '条件1{动作1} 条件2{动作2}...' 文件名:提取符合条件的字符串,也可以使用管道符的结果作为文件内容。
常用条件:
常用动作:
示例:
awk '{printf $2 "\t" $6 "\n"}' test.txt:输出文件中所有内容的第2列和第6列,第2列和第6列之间使用制表符分隔,并且第6列之后输出换行符(这里的printf如果换为print,就可以不用指定换行符了)。
df -h | grep sda5 | awk '{print $5}':查询分区信息中包含sda5的行,并输出这些行的第5列(可以自动以空格作为分隔符。)
sed命令
sed其实就是一个轻量级的流编辑器,sed命令主要用来进行数据的选取、替换、删除、新增。
sed和vim等编辑器的区别在于,vim操作的对象是一个文件,sed操作的对象不仅可以是文件,也可以是其他命令的结果或管道符输出的结果。
sed [选项] '[动作]' 文件名:处理输出并输出到屏幕或文件。
选项:
动作:
转自:https://www.cnblogs.com/guyuyun/p/12735216.html
如对本文有疑问, 点击进行留言回复!!
linux下文本编辑器vim的使用方法(复制、粘贴、替换、行号、撤销、多文件操作)
网友评论