例如,我正在尝试编写一个Awk程序,它以/ so 3/ 22 /2013分隔两个日期,并将它们分解为三个单独的数字,以便我可以分别处理3、22和2013。
我希望这个程序的名字是这样的
awk -f program_file 2/23/2013 4/15/2013到目前为止,我有:
BEGIN {
d1 = ARGV[1]
d2 = ARGV[2]
}这将接受两个日期,但我不确定如何将它们分开。此外,上面的程序必须用nawk调用,awk说它不能打开2/23/2013。
提前谢谢。
发布于 2013-03-22 21:52:36
你不能用你的方式做这件事。因为awk认为你有两个文件作为输入。也就是说,您的日期字符串被视为文件名。这就是您收到该错误消息的原因。
如果这两个日期存储在shell变量中,您可以:
awk -vd1="$d1" -vd2="$d2" BEGIN{split(d1,one,"/");split(d2,two,"/");...}{...}'...部分是您的逻辑,在上面的行中,拆分的部分存储在数组one和two中。例如,您只想打印one的元素
kent$ d1=2/23/2013
kent$ d2=4/15/2013
kent$ awk -vd1="$d1" -vd2="$d2" 'BEGIN{split(d1,one,"/");split(d2,two,"/"); for(x in one)print one[x]}'
2
23
2013或者像其他人建议的那样,你可以使用awk的FS,但你必须这样做:
kent$ echo $d1|awk -F/ '{print $1,$2,$3}'
2 23 2013如果在短时间内传递两个var,-F/将无法工作,除非它们(两个日期)在不同的行中
希望能有所帮助
https://stackoverflow.com/questions/15571747
复制相似问题