我不是一个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
提前致谢
答案 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中展开。另外,不要将$
放在变量之前,它会指示列,而不是你想要的变量。