我是awk的新手。
我使用可执行的awk脚本来处理主文件。
我在这个主文件上运行awk并形成一个变量,该变量是一个表示另一个文件的完整路径的字符串,比如文件2。
一旦获得存储在变量中的新文件路径,我希望对此文件执行额外的awk处理2.我该怎么做?
1)我需要处理文件2的内容,所以我相信我需要重新启动它。 2)或者,我需要打开此文件并继续执行awk处理,如匹配
----编辑其他信息---
主文件最终包含许多需要额外处理的路径,而不仅仅是单个文件路径。总共有3个嵌套级别的文件路径。
master.file(EG:我们找到10条路径) - > nest2(10个文件中的每一个都需要awk'd并且分别包含5个路径。总共有5 * 10个文件要awk) - - > nest3(我现在在这里执行awk。)
在每个级别,都存在多个文件路径,需要打开这些路径才能进行更多处理。这会创建一个蜘蛛网路径。因此,我这样做是作为首先在主文件上起作用的可执行awk脚本,因为嵌套路径必须通过从顶部或主文件开始的迭代形成。
在我的第一个awk脚本中,处理master.file,awk默认是逐行进行的。一旦找到匹配项,例如我的文件路径#1,我该如何打开这个新文件或重新启动它以继续nest2和nest3?
以下是我的awk脚本中代码在master.file上的代码
BEGIN {
# set the field seperator
FS=".";
# declare the basepath to files we're trying to locate and their extension
basepath = "/home/myscratch";
exten = ".txt";
}
# first locate all lines that are an include line
/^.in/ {
# concat the the basepath to the relative path+filename and append file extension for full path = mypath
mypath = basepath$3exten;
# we are only looking for includes pointing to specific_folder_NAME
if (mypath ~ /[/]specific_folder_name[/]/) {
# saving the full paths from the master.file
print mypath > "awk_master_includes.txt"
# Not sure if i should re-awk with system, but seems incorrect or better way.
# What i really want to do, is within this if-statement, to open the file stored in mypath above
#system("awk -f ./command2.awk $mypath")
}
}
答案 0 :(得分:0)
这是您可以关注的模板
catch
这假设master.file上的脚本返回file2的路径。如果不是这样,请澄清你的问题。