Chinaunix
标题:
awk的执行系统命令问题
[打印本页]
作者:
chaseey
时间:
2012-10-18 12:39
标题:
awk的执行系统命令问题
[root@localhost ~]$echo "14-Oct-2012"|awk '{a=$0;"date -s 'a' +%F"|getline b;print b}'
2012-10-10
请问哪里出错了,得出的日期不正确.
作者:
angle4
时间:
2012-10-18 12:43
没看懂你要干嘛
awk 执行系统命令应该用 system 吧
如: $ echo | awk '{system("date")}'
Thu Oct 18 12:48:40 CST 2012
作者:
chaseey
时间:
2012-10-18 13:41
回复
2#
angle4
其实是.有如下内容:
10/Oct/2012:10:39:45
11/Oct/2012:10:39:45
12/Oct/2012:10:39:45
13/Oct/2012:10:39:45
14/Oct/2012:10:39:45
复制代码
把11/Oct/2012 替换为2012-10-11
作者:
blackold
时间:
2012-10-18 14:53
回复
1#
chaseey
不能用单引号啊。
try
echo "14-Oct-2012"|awk '{a=$0;"date -s " a " +%F"|getline b;print b}'
复制代码
作者:
greysky-zfj
时间:
2012-10-18 15:27
echo "10/Oct/2012:10:39:45" | awk -F '/|:' '{system("date -d"$1$2$3" +%F")}'
复制代码
作者:
chaseey
时间:
2012-10-18 16:08
回复
6#
greysky-zfj
这个可以执行,不过我还有个要求是date 输出到标准输出,awk 还要读取这个标准输出作为判断条件. 所以我用的getline
system("")|getline 不行
" " |getline 可以,不过加上参数后出错.
作者:
kk5234
时间:
2012-10-18 16:22
本帖最后由 kk5234 于 2012-10-18 16:26 编辑
回复
7#
chaseey
echo "14-Oct-2012"|awk '{a=$0;cmd="date +%F -d "a"";cmd|getline b;print b}'
2012-10-14
复制代码
作者:
chaseey
时间:
2012-10-18 17:43
回复
8#
kk5234
这个可以!! 为什么命令需要中间赋值?
作者:
jason680
时间:
2012-10-18 20:18
回复
9#
chaseey
$ echo "14-Oct-2012" | awk '{"date +%F -d "$0 | getline; print}'
2012-10-14
作者:
L_kernel
时间:
2012-10-19 11:23
chaseey 发表于 2012-10-18 17:43
回复 8# kk5234
为了看起来,显得不那么乱,同时方便调试print cmd,执行的命令是否正确。
作者:
chaseey
时间:
2012-10-19 16:29
9楼的报错
$echo "14-Oct-2012" | awk '{"date +%F -d "$0 | getline; print}'
sh: 14-Oct-2012: command not found
14-Oct-2012
7楼的 成功
$echo "14-Oct-2012"|awk '{a=$0;cmd="date +%F -d "a"";cmd|getline b;print b}'
2012-10-14
这是上面不使用中间变量
$echo "14-Oct-2012"|awk '{"date +%F -d "$0""|getline b;print b}'
awk: (FILENAME=- FNR=1) fatal: expression for `|' redirection has null string value
结果是,需要cmd="..";cmd|getline x;才成功.
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2