linux-文本处理

本文详细介绍Linux下wc、awk、sort、uniq、cat等命令的高级用法,包括数据统计、筛选指定行、排序去重、合并文件及转换文件格式等实用技巧。

1. wc-文件数据统计

  • -l 获取行号
  • -c 获取byte数
  • -w 获取单词数
  • -m 获取字符数

例子:

    1. wc -l test.txt 查看test.txt的行数

2. awk-筛选指定行

参考

依次处理文件的每一行,并读取里面的每一个字段

  • 基本语法

  • 常量(NR,NF)

  • 函数

  • 条件

  • if/else

    1. 基本操作1:
awk 动作 文件名 
awk '{print $0}' demo.txt

注:
- 默认按空格和制表符分割字段,awk -F ','可以指定分割字段,上述指定‘,’作为分割
- $1$2分别代表第一个字段和第二个字段
    1. 基本操作2:
awk '条件 动作' 文件名

注:条件指定
awk -F ',' -v OFS=',' '$5=="ab" {print}' test.txt
上述操作:每行按','分割字段(-F ','),打印(print)第五个字段为ab($5=="ab")的行(print后面没有指定具体的列), -v OFS=','指定输出分隔符
    1. 基本操作3:去重

参考

awk '!a[$0]++' test.txt

注:a[]数组,$0整行;第一次a[$0]为空,为假;a[$0]++后有值,为真,!a[$0]++取反。另外$0是整行,也可以换成具体的行。

3. sort-排序,去重

参考

  • -t 指定分隔符
  • -r 相反的顺序,默认升序
  • -u 按指定位置值去重

例子:

    1. sort -t ‘,’ -k 2 按‘,’分割,按k2字段升序排列
    1. 重复的多行记为一行
      sort file |uniq
    1. 重复的行全部去掉
      sort file |uniq -u

4. uniq-删除邻近重复出现的行

参考

  • -c 出现次数
  • -u 只打印不重复行
  • -d 出现重复的行
  • -w 指定需要比较字符长度,从前面算起

例子:

  • 删除邻近重复出现的值:uniq test.csv
  • 统计出现次数:uniq -c test.csv(不邻近不算)
  • 指定需要比对的字符位置:uniq -w2 test.csv (只比较前面两个字符)

5. cat-合并文件

参考

5.1. 两个文件合并
    1. 一个文件在上,一个文件在下
      cat file1 file2 > file3
    1. 一个文件在左,一个文件在右
      paste file1 file2 > file3
5.2. 两个文件的交集、并集(前提条件:每个文件中不得有重复 也可以是多个文件)
    1. 取出两个文件的并集(重复的行只保留一份)
      cat file1 file2 | sort | uniq > file3
    1. 取出两个文件的交集(只留下同时存在于两个文件中的文件)
      cat file1 file2 | sort | uniq -d > file3
    1. 删除交集,留下其他的行
      cat file1 file2 | sort | uniq -u > file3

6. dos文件转为unix

使用vi 查看文件末尾有^M

dos2unix filename
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值