分页: 1 / 1

【求助】awk命令行输入多行问题

发表于 : 2012-01-25 16:37
dtczhl
我想输入命令:

代码: 全选

cat /etc/passwd | awk -F: ' \
NF != 7 { \
printf("line %d, does not have 7 fields: %s", NR, $0)} \
$1 !~ /[A-Za-z0-9]/{printf("line %d, nonalphanumeric user id:  %s\n", NR, $0)} '
但是每输完第3行回车后就会推出并且报错
结果见图~
1.jpg
如何才能正确输入命令?????
先谢了~~

Re: 【求助】awk命令行输入多行问题

发表于 : 2012-01-25 20:46
wjchen
printf 不需要打括号

代码: 全选

cat /etc/passwd | awk -F: ' \
NF != 7 { \
printf "line %d, does not have 7 fields: %s", NR, $0} \
$1 !~ /[A-Za-z0-9]/{printf "line %d, nonalphanumeric user id:  %s\n", NR, $0} '

Re: 【求助】awk命令行输入多行问题

发表于 : 2012-01-25 23:19
aerofox
awk 的 printf 是允许加括号的,楼主的代码在我这不报错,看那错误信息,bash 好像没有把第三行当成 awk 命令参数的一部分。

Re: 【求助】awk命令行输入多行问题

发表于 : 2012-01-25 23:48
josephyoung
像你这种情况每行后面可以不用加 "\"的,首先确保你输入的单引号是正确的,然后将你代码不要带\输入试试还有没有报错

Re: 【求助】awk命令行输入多行问题

发表于 : 2012-01-26 9:59
dtczhl
是不是系统不稳定阿??
我又输了一遍

代码: 全选

dtczhl@dtczhl-desktop:~$ cat /etc/passwd | awk -F: '\
> NF != 7{\
> printf("line %d, %s", NR, $0)}\
> $1 !~ /[A-Z]/{printf("line %d, nnnn:%s",  NR, 0)}'
没有问题

但我相同的又输了一遍

代码: 全选

dtczhl@dtczhl-desktop:~$ cat /etc/passwd | awk -F: '\
> NF != 7{\
> printf("abcdefg: %d %s", NR, $0)}\
bash: syntax error near unexpected token `('
又出现相同的问题了

而且有时输入换行符 \ 后没有换行,按了向上方向键敲回车又可以换行继续输入了

输出如图

代码: 全选

dtczhl@dtczhl-desktop:~$ 
dtczhl@dtczhl-desktop:~$ cat /etc/passwd | awk -F: '\
> NF != 7{\
> printf("line %d, %s", NR, $0)}\
> $1 !~ /[A-Z]/{printf("line %d, nnnn:%s",  NR, 0)}'
dtczhl@dtczhl-desktop:~$ cat /etc/passwd | awk -F: ' \
dtczhl@dtczhl-desktop:~$ cat /etc/passwd | awk -F: '\
dtczhl@dtczhl-desktop:~$ cat /etc/passwd | awk -F: ' cat /etc/passwd | awk -F: '\
> 
awk: cmd. line:1: cat /etc/passwd | awk -F: cat
awk: cmd. line:1:                   ^ syntax error
awk: cmd. line:1: cat /etc/passwd | awk -F: cat
awk: cmd. line:1:                         ^ syntax error
awk:  cat /etc/passwd | awk -F: 
awk:                    ^ syntax error
awk: cmd. line:1:  cat /etc/passwd | awk -F: 
awk: cmd. line:1:                          ^ syntax error
dtczhl@dtczhl-desktop:~$ cat /etc/passwd | awk -F: '\
dtczhl@dtczhl-desktop:~$ cat /etc/passwd | awk -F: '\
> NF != 7{\
> printf("abcdefg: %d %s", NR, $0)}\
bash: syntax error near unexpected token `('
dtczhl@dtczhl-desktop:~$