Awk 如何抽出文件中第10列=1并且第20列=5的数据,其中前十列或者11列到14列有中文
时间: 2024-03-26 22:40:18 浏览: 77
可以使用 awk 命令结合正则表达式来实现这个功能。具体命令如下:
```
awk -F '\t' '$10=="1" && $20=="5" && ($1~/[[:alnum:]]/ || $11~/[[:alnum:]]/ || $12~/[[:alnum:]]/ || $13~/[[:alnum:]]/ || $14~/[[:alnum:]]/){print}' 文件名
```
解释一下各个部分:
- `-F '\t'`:指定分隔符为制表符。
- `$10=="1" && $20=="5"`:判断第10列是否为1且第20列是否为5。
- `($1~/[[:alnum:]]/ || $11~/[[:alnum:]]/ || $12~/[[:alnum:]]/ || $13~/[[:alnum:]]/ || $14~/[[:alnum:]]/)`:判断前十列或者11-14列是否包含字母或数字。其中 `~/[[:alnum:]]/` 表示匹配字母或数字的正则表达式。
- `{print}`:如果符合要求,则打印整行数据。
注意:以上命令中的制表符 `\t` 可能在不同平台下表现不同,可以根据实际情况调整分隔符。另外,如果文件不是以制表符分隔的,需要使用 `-F` 参数指定正确的分隔符。
相关问题
awk分组多列求和
可以使用awk命令的数组和循环来实现多列求和并分组。
假设有一个文件data.txt,数据如下:
```
A 10 20
B 15 25
A 5 15
B 20 30
```
其中第一列是分组列,第二列和第三列是需要求和的列。
使用以下命令可以实现对第二列和第三列的求和,并按照第一列进行分组:
```
awk '{a[$1]+=$2;b[$1]+=$3} END{for(i in a) print i,a[i],b[i]}' data.txt
```
输出结果为:
```
A 15 35
B 35 55
```
其中,a[$1]和b[$1]分别表示第一列的值为键值的第二列和第三列的累加和。最后循环输出结果时,分别输出键值和对应的两列的累加和。
计算各类文本以"|"分隔的tar.gz文件第20和21个字段之和,提高性能
可以使用Linux的命令行工具 grep、cut 和 awk 进行处理。首先使用grep过滤出所有包含"|"的行,然后使用cut命令提取出第20和21个字段,并使用awk计算它们的和。具体命令如下:
```shell
zgrep "|" file.tar.gz | cut -d "|" -f 20,21 | awk -F "|" '{sum += $1 + $2} END {print sum}'
```
其中,zgrep命令用于在压缩文件中搜索包含"|"的行,cut命令用于提取第20和21个字段,awk命令用于计算它们的和并输出结果。
为了提高性能,可以使用多核CPU并行处理数据。可以使用GNU Parallel工具来实现并行化,具体命令如下:
```shell
zcat file.tar.gz | parallel --pipe --block 10M "grep '|' | cut -d '|' -f 20,21 | awk -F '|' '{sum += \$1 + \$2} END {print sum}'" | awk '{sum += $1} END {print sum}'
```
其中,zcat命令用于解压缩文件,parallel命令用于并行处理数据。--pipe选项将数据流传递给后面的命令,--block选项指定每个并行任务处理的数据块大小,grep、cut和awk命令与之前相同,最后再使用awk命令计算所有并行任务的结果总和。
阅读全文
相关推荐
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![txt](https://img-home.csdnimg.cn/images/20241231045021.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![txt](https://img-home.csdnimg.cn/images/20241231045021.png)