试图打印awk变量

时间:2017-08-16 13:20:27

标签: awk

我不是一个awk用户,但经过一些谷歌搜索,确定它最适合我想要做的事情......唯一的问题是,我无法让它工作。我试图在sudoers条目之前插入服务器名称($ i)和逗号时打印出sudoers的内容,因为我将它指向.csv文件。

egrep '^[aA-zZ]|^[%]' //$i/etc/sudoers | awk -v var="$i" '{print "$var," $0}' | tee -a $LOG

这是我得到的输出:

$var,unixpvfn   ALL = (root)NOPASSWD:/usr/bin/passwd

awk: no program given

提前致谢

2 个答案:

答案 0 :(得分:1)

egrep在这里是多余的。只需awk

awk -v var="$i" '/^[[:alpha:]%]/{print var","$0}' //"$i"/etc/sudoers | tee -a "$LOG"

顺便说一句,您也可以使用sed

sed "/^[[:alpha:]%]/s/^/${i},/" //"$i"/etc/sudoers | tee -a "$LOG"

答案 1 :(得分:0)

您可以保存grep并让awk完成所有工作:

awk -v svr="$i" '/^[aA-zZ%]/{print svr "," $0}' //$i/etc/sudoers 
    | tee -a $LOG

如果你把东西放在".."之间,它意味着文字字符串,而变量不会在awk中展开。另外,不要将$放在变量之前,它会指示列,而不是你想要的变量。