linux - 管道 grep 进行切割

标签 linux bash shell

这一行:

echo $(grep Uid /proc/1/status) | cut -d ' ' -f 2

产生输出:

0

这一行:

grep Uid /proc/1/status | cut -d ' ' -f 2

产生输出:

Uid:    0   0   0   0

我的目标是第一个输出。我的问题是,为什么第二个命令没有产生我期望的输出。为什么我需要回显它?

最佳答案

实现此目的的一种方法是更改​​ bash shell 中的输出字段分隔符或 OFS 变量

IFSOLD="$IFS" # IFS for Internal field separator
IFS=$'\t'
grep 'Uid' /proc/1/status | cut -f 2
0 # Your result
IFS="$IFSOLD"

或者简单的方法

grep 'Uid' /proc/1/status | cut -d $'\t' -f 2

注意:顺便说一句,tab 是剪切的默认定界符 [ here ]

关于linux - 管道 grep 进行切割,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47149411/

相关文章:

linux - ioctl() 调用将文件描述符重置为 0

c - 使用 NETLINK 的 VLAN 信息

bash - 在一个命令中通过 xargs 传送两个文件名(带空格)

linux - grep字符串中的多个通配符

linux - 基于 Poco 的二进制文件在运行时找不到库

linux - 邮件无法发送消息 : Process exited with a non-zero status

bash - 如何在 AWK 中一次删除多个列和字段分隔符?

shell - 为什么 emacs comint 模式不将字符串作为 shell 处理?

linux - 日期命令linux中的无效日期错误

linux - 如何防止 gethostid 在 linux 上进行 DNS 查找