awk 里面再读取另一个文件
时间: 2023-07-29 12:09:42 浏览: 74
在 awk 中,可以同时对多个文件进行处理。你可以在命令行中指定多个文件名,或者在 awk 脚本中通过 `ARGV` 数组来获取所有文件名。以下是一个同时处理两个文件的示例命令:
```
awk '{print FILENAME ":" $0}' file1 file2
```
该命令会将 `file1` 和 `file2` 中的每一行都打印出来,并在行首加上当前处理的文件名。
如果你想在 awk 脚本中读取另一个文件,可以使用 `getline` 函数。该函数会从指定的文件中读取下一行,并将其存储在指定的变量中。以下是一个示例脚本:
```
awk '{
getline line < "file2"
print $0, line
}' file1
```
该脚本会逐行读取 `file1` 中的每一行,然后从 `file2` 中读取下一行,并将两行内容打印出来。注意在 `getline` 函数中指定的文件名需要使用双引号括起来。
相关问题
如何创建一个AWK文件
要创建一个 AWK 文件,您可以使用任何文本编辑器,如Notepad、Sublime Text、VS Code等。以下是创建一个简单 AWK 文件的步骤:
1. 打开您选择的文本编辑器。
2. 创建一个新的空文件。
3. 在文件的第一行,添加以下内容:
```
#!/bin/awk -f
```
这个语句告诉操作系统,这个文件需要使用 AWK 解释器来运行。
4. 在接下来的行中,添加 AWK 命令和脚本代码。
5. 保存文件并为其分配一个有意义的名称,例如 my_awk_script.awk。
现在,您就可以使用 AWK 解释器来运行这个脚本。假设您的脚本名称为 my_awk_script.awk,您可以在终端中输入以下命令来运行它:
```
awk -f my_awk_script.awk input_file.txt
```
其中,input_file.txt 是您希望 AWK 脚本处理的输入文件的名称。
使用awk再写一个
除了使用`cut`命令以外,我们还可以使用`awk`来实现这个功能。下面是一个示例脚本:
```shell
#!/bin/bash
str="3.0.14.9"
result=$(echo "$str" | awk -F '.' '{print $1"."$2"."$3}')
echo "$result"
```
这个脚本首先将输入的字符串赋值给`str`变量,然后使用`awk`命令按`.`作为分隔符,提取前三个字段,并使用`.`将它们连接起来。输出结果为`3.0.14`。
在`awk`命令中,`-F '.'`选项指定了`.`作为分隔符。`'{print $1"."$2"."$3}'`部分则指定了输出的格式,即将前三个字段用`.`连接起来。