【发布时间】:2017-06-17 15:36:48
【问题描述】:
如何使用 shell 参数或命令参数将输出打印到 awk 中的目录?
Shell 程序调用并将参数传递给 awk 程序:
testshell.sh
shelloutputdir="./ouputdir/"
./testawk inputfile.txt ./outputdir/
awk 程序:
testawk
#!/usr/bin/awk -f
{
print FILENAME > "./outputdir/outputfile1.txt"
fn2="outputfile2.txt"
fn3="outputfile3.txt"
fn4="outputfile4.txt"
print FILENAME > ARGV[2]"/"fn2
print FILENAME > ARGV[2]"subdir/"fn3
print FILENAME > $shelloutputdir"subdir/"fn4
}
注意:
inputfile.txt
只是一个示例,因为 shell 和 awk 程序将处理其他参数。
输出目录已经存在。
./outputdir/
./outputdir/subdir/
输出:
./outputdir/outputfile1.txt
./outputdir/outputfile2.txt
./outputdir/subdir/outputfile3.txt
outputfile4.txt 未创建
错误:
awk: ./testawk:9: (FILENAME=inputfile.txt FNR=1) fatal: can't redirect to `input text filesubdir/outputfile4.txt' (No such file or directory)
问题总结:
如何在 awk 中显式设置输出目录?
如何在awk中使用命令行参数设置输出目录?
如果awk中不存在目录,如何创建?
如何将 shell 变量传递给 awk 变量以设置输出目录?
感谢帮助和任何示例方法
【问题讨论】:
-
总而言之,您的问题是“如何在 awk 脚本中获取命令行参数?”和“如何在
awk脚本中创建目录?” -
相当接近,“如何在 awk 脚本中获取命令行参数?”对于第二个问题“输出到现有目录,通过在 awk 脚本中的路径和命令行参数中明确说明”的两种情况,如果目录不存在,最好有一个创建目录的示例也是。
-
Here's 用于获取命令行参数的副本。您已经可以使用
print "foo" > "dir/subdir/file"写入存在的子目录中的文件 -
最好这样
ARGV[2]"/"fn。如果是重复的//这不是问题。 -
不,没问题。路径中的 Multilply
/将被系统忽略。
标签: bash shell awk text-processing