awk从脚本内读取文件内容到变量

简介: awk从脚本内读取文件内容到变量

在awk中,如果你需要从脚本内读取文件内容并赋值给变量,可以利用awk的内置变量getline来逐行读取文件。以下是一个简单的示例,说明如何使用awk将文件内容读取到变量中:

#!/usr/bin/awk -f

BEGIN {
   
    while ((getline line < "filename") > 0) {
   
        # 这里将每一行的内容赋给变量line
        print "Line: " line
        # 可以进一步处理line,比如分割字段等
        split(line, fields, /[:,;\t]/)
        # 将字段赋给其他变量
        field1 = fields[1]
        field2 = fields[2]
        # 根据实际字段分隔符调整split函数中的正则表达式
    }
    if (getline < "filename" <= 0) {
   
        print "Error reading file"
    }
}

# 如果你只需要读取特定行或者处理文件中的数据记录,
# 也可以直接在规则(pattern)部分进行操作,而不是在BEGIN块中。
# END块用于在所有行处理完毕后执行的操作。

END {
   
    # 在这里你可以使用之前赋值给变量的值
}

请注意,在上述脚本中:

  • getline line < "filename" 会从名为"filename"的文件中逐行读取内容,并将每一行的内容存入变量line中。
  • split(line, fields, /[:,;\t]/) 是用来分割当前行内容为多个字段,并将它们存储在数组fields中。
  • 如果你需要将这些字段赋给其他的awk变量(如field1和field2),可以直接引用数组元素。

如果你想在shell脚本中用awk读取文件内容并将其赋值给shell变量,通常的做法是通过管道或命令替换来实现,例如:

#!/bin/bash

content=$(awk 'NR==1{print}' filename)
# 上述命令将文件filename的第一行内容赋给shell变量$content

# 或者遍历整个文件
while IFS= read -r line; do
    awk '{print $1}' <<< "$line"
done < filename
# 上述循环将逐行读取文件并将每行的第一个字段输出,若要存入shell变量,可以:
while IFS= read -r line; do
    shell_var=$(awk '{print $1}' <<< "$line")
    echo "$shell_var"
done < filename

对于复杂的awk脚本,可能更适合在awk内部完成所有处理,而不需要将内容再传递回shell变量。

目录
相关文章
|
3月前
|
Perl
在 `awk` 脚本中初始化变量
在 `awk` 脚本中初始化变量
19 2
|
4月前
|
存储 C语言
C 语言文件读取全指南:打开、读取、逐行输出
要从文件读取,可以使用 r 模式: FILE *fptr; // 以读取模式打开文件 fptr = fopen("filename.txt", "r"); 这将使 filename.txt 打开以进行读取。 在 C 中读取文件需要一点工作。坚持住!我们将一步一步地指导您。 接下来,我们需要创建一个足够大的字符串来存储文件的内容。 例如,让我们创建一个可以存储多达 100 个字符的字符串:
197 2
C 语言文件读取全指南:打开、读取、逐行输出
|
9月前
|
Shell
Shell 脚本输出命令结果保持原格式,保留换行
Shell 脚本输出命令结果保持原格式,保留换行
131 0
|
3月前
|
Perl
在awk中,从多个文件读取数据
在awk中,从多个文件读取数据
18 3
|
6月前
|
Shell Linux
Shell脚本循环读取文件中的每一行
Shell脚本循环读取文件中的每一行
|
9月前
|
Python
Python 文件操作(创建、读取、追加、图片视频读取)
Python 文件操作(创建、读取、追加、图片视频读取)
89 0
|
C语言
【C 语言】文件操作 ( 配置文件读写 | 写出或更新配置文件 | 逐行遍历文件文本数据 | 获取文件中的文本行 | 查询文本行数据 | 追加文件数据 | 使用占位符方式拼接字符串 )
【C 语言】文件操作 ( 配置文件读写 | 写出或更新配置文件 | 逐行遍历文件文本数据 | 获取文件中的文本行 | 查询文本行数据 | 追加文件数据 | 使用占位符方式拼接字符串 )
220 0
|
Shell Linux Perl
shell 定义绝对路径,出错 sed: 未找到命令,脚本功能:替换某一行内容
shell 定义绝对路径,出错 sed: 未找到命令,脚本功能:替换某一行内容
shell 定义绝对路径,出错 sed: 未找到命令,脚本功能:替换某一行内容