shell中cut、sort命令

1. cut命令

cut命令将行按指定的分隔符分割成多列,它的弱点在于不好处理多个分隔符重复的情况,因此经常结合tr的压缩功能。

/data # cut -h
cut: unrecognized option: h
BusyBox v1.29.3 (2019-01-24 07:45:07 UTC) multi-call binary.

Usage: cut [OPTIONS] [FILE]...

Print selected fields from each input FILE to stdout

	-b LIST	Output only bytes from LIST
	-c LIST	Output only characters from LIST
	-d CHAR	Use CHAR instead of tab as the field delimiter
	-s	Output only the lines containing delimiter
	-f N	Print only these fields
	-n	Ignored

-b:按字节筛选;
-n:与"-b"选项连用,表示禁止将字节分割开来操作;
-c:按字符筛选;
-f:按字段筛选;
-d:指定字段分隔符,不写-d时的默认字段分隔符为"TAB";因此只能和"-f"选项一起使用。
-s:避免打印不包含分隔符的行;
–complement:补足被选择的字节、字符或字段(反向选择的意思或者说是补集)
–output-delimiter:指定输出分割符;默认为输入分隔符。

cut中的范围指定
可以使用"N-"、“N-M"和”-M"分别表示每行N字符(或字节或字段)后的所有内容、N-M段内容和M段之前的内容。注意包括N和M的边界。

  • 示例1
cut -d : -f 1-3 /etc/passwd ##指定分隔符为:,显示第1到3列
cut -c 1,4 /etc/passwd ##显示第一和第四个字符

/data # cut -d : -f 1-3 /etc/passwd
root:x:0
bin:x:1
daemon:x:2
adm:x:3
lp:x:4


/data # cut -c 1,4 /etc/passwd
rt
b:
dm
a:
lx
sc
st
ht
ml


  • 示例2 使用-d
    按字段筛选
/data # cat info1.txt
huahua   M  100
xiaowang M  10
xiaoming  M  21
wang  M  19
xiaowei  F  22
wangming  M  3
xiaofang  F  1

/data #
/data # cut -d" " -f2,3 info1.txt

M
 M
 M
 F
 M
 F
/data #

可以看到输出的是乱七八糟的非预期结果,因为字段之间有多个空格间隔,结合tr工具来压缩连续字符

/data #  cat info1.txt  | tr -s " " | cut -d " " -f2,3
M 100
M 10
M 21
M 19
F 22
M 3
F 1
  • 示例3 使用-s
    若文件中有不包含分割符的行 使用-s去掉这些行
/data # cat info1.txt
huahua   M  100
xiaowang M  10
xiaoming  M  21
wang  M  19
xiaowei  F  22
wangming  M  3
xiaofang  F  1
dsffdfsf
sfff;sdd

/data # cat info1.txt  | tr -s " " | cut -d " " -f2,3
M 100
M 10
M 21
M 19
F 22
M 3
F 1
dsffdfsf
sfff;sdd

上面可以看到最后两行也打印了。加上-s,去掉没有分割符" "的行,效果如下:

/data # cat info1.txt  | tr -s " " | cut -d " " -f2,3 -s
M 100
M 10
M 21
M 19
F 22
M 3
F 1

2. sort命令:排序

sort
-n ##纯数字排序
-r ##倒序
-u ##去掉重复数字
-o ##输出到指定文件中
-t ##指定分隔符
-k ##指定要排序的列

对 info.txt 的第三列排序后打印,原文件不变
/data # cat info.txt
huahua:M:100
xiaowang:M:10
xiaoming:M:21
wang:M:19
xiaowei:F:22
wangming:M:3
xiaofang:F:1


排序
/data # sort -n -t ":" -k 3 info.txt
xiaofang:F:1
wangming:M:3
xiaowang:M:10
wang:M:19
xiaoming:M:21
xiaowei:F:22
huahua:M:100

参考:https://www.cnblogs.com/f-ck-need-u/p/7048359.html#blogshell

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值