Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 尝试使用系统在awk中获取月份名称_Shell_Scripting_Awk - Fatal编程技术网

Shell 尝试使用系统在awk中获取月份名称

Shell 尝试使用系统在awk中获取月份名称,shell,scripting,awk,Shell,Scripting,Awk,我正试图使用以下代码在awk中获取月份名称 system("date -d" dat "+%b") 如何将输出分配给变量?是否需要使用system()?那么awk的strftime()呢?您可以看一个示例(尽管它似乎是GNU awk特有的)。您可以这样做- [jaypal:~/Temp] awk -v dat="20111016" 'BEGIN{split("Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec",month,","); a=subs

我正试图使用以下代码在awk中获取月份名称

 system("date -d" dat "+%b")

如何将输出分配给变量?

是否需要使用
system()
?那么awk的strftime()呢?您可以看一个示例(尽管它似乎是GNU awk特有的)。

您可以这样做-

[jaypal:~/Temp] awk -v dat="20111016" 'BEGIN{split("Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec",month,","); a=substr(dat,5,2); print month[a]}'
Oct
如果您的问题是“如何使用命令行的输出填充变量”,那么答案是“管道”。-)


请注意,这可能不是您真正想要做的事情,但如果没有更多关于您意图的详细信息,至少它回答了您的问题。

哪个平台上的awk版本?这很重要,因为GNUawk具有其他地方无法提供的功能。你会意识到你问错了问题。您应该会问:“如何从
awk
中的Unix时间戳中获取月份名称?”可能会有这样一句话:“我想知道是否有办法从
system
运行的命令中获取输出,以便使用
date
命令进行转换?”。请看这条线索只要您使用GNU
awk
,它就适用于实际提出的问题(“如何将
system
的输出分配给变量?”)。但是,如果你使用GNU代码> AWK<代码>,那么有一个更好的方法来处理真正的问题“如何从UNIX时间戳中获得一个UNIX时间戳在<代码> AWK< /代码>?”中,使用内置的GNU时间操作函数。BASH-3.2$AWK——版本GNUAWK3.1.5版权(C)1989,1991—2005自由软件基金会。bash-3.2$uname-Linux服务器2.6.18-194.11.4.el5#1 SMP Fri Sep 17 04:57:05 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux。我尝试使用预先确定的字符串获取月份名称,而不是根据系统月份。我尝试检查函数是否根据给定字符串工作。dat=“20111016”;月=标准时间(“%b”,substr(dat,5,2));当我更改字符串时,它仍然给我一个月作为十二月。所以字符串'20111016'代表2011-10-16(2011年10月16日),而不是Unix时间戳?然后您可能需要更仔细地研究GNU
awk
time函数,尤其是
mktime
$ awk 'BEGIN{ str="date \"+%b\""; str | getline content; print content; }'
Dec