cut、printf、awk、sed在linux中都是用来处理文本的命令,接下来一个一个看。
一、cut命令
cut [选项] 文件名
选项:
主要使用一下两个参数,若是只使用 -f 则默认的分割符为 \t
-f 列号:提取第几列
-d 分隔符:按照指定的分割符分割列
命令说明:
cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。
例:cut -f 2,4 stu.txt // 取出第2,4列,按 \t 分割
例:cut -f 2 -d ":" stu.txt // 取出第2列,按 : 分割
注意:cut是由局限性的,若是数据中间有好多的空格,而你又是按照空格来切分的,这个时候会有好多的空白数据,但是awk可以解决这个问题。
二、printf命令
printf '输出类型输出格式' 输出内容
输出格式
%ns // 输出字符串,n为输出几个字符
%ni // 输出整数,n为输出几个数字
%m.nf // 输出浮点数,m为输出的整数位,n为输出的小数位
输出格式
使用案例
printf '%s %s %s\n' 1 2 3 4 5 6
结果:
1 2 3
4 5 6
printf '%s\t%s\t%s\n' $(cat stu.txt)
结果:
原数据
执行后
三、awk命令
AWK是一种处理文本文件的语言,是一个强大的文本分析工具。
之所以叫AWK是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的Family Name的首字符。
直接上例子:
awk '{printf $2 "\n"}' a.txta.txt // 取出第2列
BEGIN
awk 'BEGIN{printf "this is a printf \n"} {printf $2 " " $3 "\n"}' student.txt
结果:在开始先输出
this is a printf
NAME GENDER
优优 女
阿斌 男
堂哥 女
END
awk 'END{printf "this is a printf \n"} {printf $2 "\t" $3 "\n"}' student.txt
结果:在最后结束后输出
NAME GENDER
优优 女
阿斌 男
堂哥 女
this is a printf
FS=":" // 按:号切割
awk 'BEGIN{FS="-"}{printf $1 "\n"}' a.txt
条件判断
awk 'BEGIN{FS="-"}$2>10{printf $2 "\n"}' a.txt
条件1{执行1}条件2{执行2}
四、sed命令
Linux sed命令是利用script来处理文本文件。
sed可依照script的指令,来处理、编辑文本文件。
语法
sed [-hnV][-e<script>][-f<script文件>][文本文件]
参数
动作说明
例子:
sed -n '2p' student.txt // 查看第二行
sed -i '1a xxxxxxx' a.txt // -i会操作到文件,1a 追加第一行
sed -i '1c xxxxxxx' a.txt // 替换第一行的数据
sed -i '1d' a.txt // 删除第一行
sed '4s/78/98/g' // 把4列的78换成98
sed -e '1s/xxx//g;2s/xxx//g'// 把第一列的xxx和第二列的xxx替换为空
sed -i -e '1s/xxx//g;2s/xxx//g'// 把第一列的xxx和第二列的xxx替换为空,操作到文件