bash_aliases和awk的引号转义 [英] bash_aliases and awk escaping of quotes

查看:111
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆