bash_aliases和awk的引号转义 [英] bash_aliases and awk escaping of quotes
本文介绍了bash_aliases和awk的引号转义的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试为命令创建别名以查看内存使用情况,
I'm trying to create an alias for a command to see the memory use,
ps -u user -o rss,command | grep -v peruser | awk '{sum+=$1} END {print sum/1024}'
但天真,
#.bash_aliases
alias totalmem='ps -u user -o rss,command | grep -v peruser | awk '{sum+=$1} END {print sum/1024}''
给出了错误:
-bash: alias: END: not found
-bash: alias: {print: not found
-bash: alias: sum/1024}: not found
我尝试用双引号
totalmem = ps ... | awk'{sum + = $ 1} END {print sum / 1024}'
或
totalmem ='ps ... | awk {sum + = $ 1} END {print sum / 1024}'
,
转义,
totalmem ='ps ... | awk \'{sum + = $ 1} END {print sum / 1024} \''
,
或转义双引号...但我似乎无法使其正常工作。
totalmem ='ps ... |awk \'{sum+=$1} END {print sum/1024}\''
,
or escaping double quotes ... but I can't seem to make it work.
totalmem ='ps ... | awk \ {sum + = $ 1} END {print sum / 1024} \'
,
给出了错误
awk: "{sum+=}
awk: ^ unterminated string
任何提示均会赞赏。
推荐答案
您几乎拥有了它, $
将被扩展用双引号引起来,所以需要额外的转义:
You almost have it, the $
will be expanded in double-quotes, so that needs extra escaping:
alias totalmem='ps -u user -o rss,command | grep -v peruser | awk "{sum+=\$1} END {print sum/1024}"'
或 iiSeymour 建议的 awk
内部模式:
alias totalmem='ps -u user -o rss,command | awk "!/peruser/ {sum+=\$1} END {print sum/1024}"'
这篇关于bash_aliases和awk的引号转义的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文