shell文本分割、截取、去重方法

该博客主要介绍Linux下目标文件的清洗操作。第一步使用cut -d、-f等命令进行截取,介绍了制表符、定界符等相关内容及字符范围记法;第二步进行去重,提到了sort、uniq等命令,还介绍了不同去重方式及查看重复记录数量的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目标文件

./aa/sdf/dslkfjuklsdfjlksjdf
./aa/sdf/dslkfjuklsdfjlksjdf
./bb/sdf2/dslkfjuklsdfjlksjdf
./bb/sdf2/dslkfjuklsdfjlksjdf
./bb/sdf2/dslkfjuklsdfjlksjdf
./bb/sdf2/dslkfjuklsdfjlksjdf
./cc/sdf3/dslkfjuklsdfjlksjdf

清洗目标为:

aa/sdf
bb/sdf2
cc/sdf3

第一步截取

用到cut -d、-f命令、详情查看:https://www.runoob.com/linux/linux-comm-cut.html

cut -f FIELD_LIST filename
FIELD_LIST是需要显示的列。它由列好组成,彼此之间用逗号分隔。例如:
cut -f 2,3 filename
这条命令将显示第2列和第3列。

制表符是字段或列的默认定界符。没有定界符的行也会照原样打印出来。要避免打印出这种不包含定界符的行,则可以使用cut的-s选项。

    要指定字符的定界符,使用-d选项。

    另外,cut命令还可以将一串字符作为列来显示。

    -b 表示字节;

    -c 表示字符;

    -f 表示定义字段。

    下表列出了字符范围的记法:

记法范围
N-从第N个字节,字符或字段到行尾
N-M从第N个字节,字符或字段到第M个(包括第M个在内)字节、字符或字段
-M第1个字节,字符或字段到第M个(包括第M个在内)字节、字符或字段
#-d 后面是分割的内容,-f 2-3是取出第二和第三个,从0开始
cat test.txt |cut -d / -f 2-3

第一步得到的结果:

aa/sdf
aa/sdf
bb/sdf2
bb/sdf2
bb/sdf2
bb/sdf2
cc/sdf3

第二步去重

去重的方式有几种、用到的命令有sort、uniq

sort详情:https://www.runoob.com/linux/linux-comm-sort.html

将第一步的结果写到t.log下

方式1

sort -u +文件名

sort -u t.log  或者 cat t.log |sort -u

结果

aa/sdf
bb/sdf2
cc/sdf3

方式2

使用uniq,uniq达到去重的目的,需要与sort结合使用。先排序再去重,否则达不到去重的目的!

sort t.log |uniq

结果

aa/sdf
bb/sdf2
cc/sdf3

查看没有重复的记录 uniq -u

temp]$ sort t.log |uniq -u

结果

cc/sdf3

查看发生重复的记录 uniq -d

sort t.log |uniq -d

结果

aa/sdf
bb/sdf2

如果要查看每个重复的数量可以使用uniq -dc (c是用来计数)

sort t.log |uniq -dc

结果

      2 aa/sdf
      4 bb/sdf2

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

漁陽

彼此共勉,砥砺前行

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值