awk处理文本并生成数组
时间: 2024-02-02 20:43:10 浏览: 31
在awk中,可以使用数组来存储和处理数据。以下是一个简单的示例,演示如何使用awk处理文本并生成数组:
假设我们有一个包含以下内容的文本文件:
```
apple 5
banana 3
orange 2
apple 3
orange 4
```
我们想要计算每种水果的总数,那么我们可以使用以下awk脚本:
```
awk '{fruits[$1]+=$2} END{for(fruit in fruits) print fruit,fruits[fruit]}' filename.txt
```
在这个脚本中,我们定义了一个名为fruits的数组,用于存储水果和它们的总数。对于每一行,我们使用$1和$2来获取水果的名称和数量,并将数量添加到相应的数组元素中。在处理完所有行后,我们使用for循环遍历数组并打印每种水果的名称和总数。
执行这个awk脚本,输出将会是:
```
apple 8
banana 3
orange 6
```
这个脚本可以轻松地处理更大的文本文件,并生成需要的数组数据。
相关问题
用awk分割字符串并生成数组
假设有一个字符串为"hello world",我们想要把它以空格为分隔符分割成两个单词,并保存到一个数组中,可以使用如下的awk命令:
```
echo "hello world" | awk '{split($0, arr, " "); print arr[1], arr[2]}'
```
其中,$0代表整个输入行,split函数将输入行以空格为分隔符分割成多个元素,并保存到数组arr中,arr[1]和arr[2]分别代表数组中的第一个和第二个元素,即分割后的两个单词。
如果想要将分割后的数组中的元素以逗号为分隔符输出,可以使用如下的命令:
```
echo "hello world" | awk '{split($0, arr, " "); for(i=1; i<=length(arr); i++) {if(i!=1) {printf ", "}; printf arr[i]}}'
```
其中,length(arr)代表数组arr的长度,for循环用来遍历数组中的元素,if语句用于判断当前元素是否为数组的第一个元素,如果不是,则在元素前输出一个逗号和一个空格,最后使用printf函数输出当前元素。
用awk提取并生成一个数组
这里提供一个示例,假设有一个文本文件data.txt,内容如下:
```
John 32 M
Anna 28 F
David 45 M
Kate 33 F
```
需要提取第一列和第三列,并生成一个数组,可以使用以下awk命令:
```
awk '{arr[$1]=$3} END{for (i in arr) print i, arr[i]}' data.txt
```
输出结果如下:
```
Anna F
David M
John M
Kate F
```
解释一下上述命令:
- '{arr[$1]=$3}':将第一列作为数组arr的键,第三列作为数组arr的值。
- 'END{for (i in arr) print i, arr[i]}':在处理完整个文件后,遍历数组arr,输出键和值。
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)