首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux awk命令不能正确打印整数?

Linux awk命令不能正确打印整数?
EN

Stack Overflow用户
提问于 2013-02-14 05:54:03
回答 2查看 253关注 0票数 0

有人能解释一下为什么这个命令不能打印出不带换行符的PID列表吗?我想要如下输出:

代码语言:javascript
复制
1234 5678 123 456

这些我都试过了,没有一个管用。

代码语言:javascript
复制
ps -eww --no-headers -o pid,args | grep 'usr' | awk '{ printf "%d ", $1 }'
ps -eww --no-headers -o pid,args | grep 'usr' | awk '{ printf "%s ", $1 }'
ps -eww --no-headers -o pid,args | grep 'usr' | awk '{ print $1 }' | tr '\n' ''
ps -eww --no-headers -o pid,args | grep 'usr' | awk '{ print $1 }' | tr -d '\n'

我刚发现bash工作得很好,但在我的情况下不是zsh。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-14 06:08:49

zsh的一个功能是让用户知道最后一个输出行是部分的(即没有最后一个换行符)。有关这方面的更多详细信息,您可以在man zshoptions中查找PROMPT_CRPROMPT_SPPROMPT_EOL_MARK

您可以在~/.zshrc中添加PROMPT_EOL_MARK=''以使部分行指示符为空,但我建议您不要这么做:现在我们知道这只是一个功能,有时如果让它处于启用状态,我们可能会注意到数据出现问题。在功能相当强大的终端上,百分号( PROMPT_EOL_MARK未设置时的默认值)是output inverted,所以它不能与实际输出混淆。

您的命令的输出是一个pids列表,完全符合您的要求。添加最后一个换行符使其在zsh中看起来也正确

代码语言:javascript
复制
ps -eww --no-headers -o pid,args | awk '/usr/ { printf "%d ", $1 } END {print""}'

(还使用了另一个答案的想法,即使用awk的力量来摆脱grep )。

票数 2
EN

Stack Overflow用户

发布于 2013-02-14 06:00:32

它对我来说是这样的:

代码语言:javascript
复制
ps -eww --no-headers -o pid,args | awk '/usr/{printf "%d ",$1}'

也就是说,awk可以搜索与正则表达式匹配的字符串,因此在使用awk时并不真正需要grep

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14863890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档