gpt4 book ai didi

awk - 如何获取 awk 脚本正在处理的文件号?

转载 作者:行者123 更新时间:2023-12-04 01:39:34 26 4
gpt4 key购买 nike

假设我有 2 个或更多文件由 处理。 awk 脚本。

$ cat file1
a
b
c

$ cat file2
d
e

如何获取正在处理的文件编号?是内置的 awk 为了那个原因?

我想要一个具有以下行为的脚本。我可以用什么作为我的 SOMEVARIABLE ?
$ awk '{print FILENAME, NR, FNR, SOMEVARIABLE, $0}' file1 file2
file1 1 1 1 a
file1 2 2 1 b
file1 3 3 1 c
file2 4 1 2 d
file2 5 2 2 e

最佳答案

编辑:由于 OP 需要特定格式的输出,并且不想只需要文件计数,所以现在添加以下解决方案,这也应该考虑空文件计数。(用 GNU awk 测试和编写)

awk '
FNR==1{
FNUM++
}
{
print FILENAME, NR, FNR, FNUM, $0
}
ENDFILE{
if(FNUM==prev){
FNUM++
print FILENAME, 0, 0, FNUM, "Empty file"
}
prev=FNUM
}' file1 file2

1 Input_file1 和空 Input_file2 的输出如下。
file1 1 1 1 a
file1 2 2 1 b
file1 3 3 1 c
file2 0 0 2 Empty file



想知道awk处理的文件总数的解决方案命令:

第一个解决方案:您能否尝试以下操作,使用 GNU awk (考虑到您不想在这里计算空文件)。
awk 'NF{count++;nextfile} END{print count}' Input_file1  Input_file2



第二种解决方案:如果您只想知道传递给 awk 的文件数命令然后尝试跟随。
awk 'END {print ARGC-1}' Input_file1 Input_file2

以上代码举例说明:假设以下是 Input_files,其中 Input_file1 有内容,Input_file2 是空文件,如下所示:
cat Input_file1
a
b
c
> Input_file2

现在当我们运行命令 ARGC我们得到 2 个文件的输出。
awk 'END {print ARGC-1}'  Input_file1  Input_file2
2

现在,当我运行我的第一个命令时,它给出了 1 个文件,因为它不计算空文件。
awk 'NF{count++;nextfile} END{print count}'  Input_file1  Input_file2
1

关于awk - 如何获取 awk 脚本正在处理的文件号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58015719/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com