我知道这个问题已经被问到了,但是我发现的解决方案没有给我带来帮助!我的程序有这样的输出:
COUNT|293|1|lps
我对第二个字段很感兴趣但是没有一个尝试有效:
./spawn 1 | cut -d '|' -f2
./spawn 1 | cut -d \| -f2
./spawn 1 | awk -F "|" '{print $2}'
./spawn 1 | awk 'BEGIN{FS="|"} {print $2}'
./spawn 1 | sed 's/|/;/g'
./spawn 1 | sed 's/\|/;/g'
但输出总是一样的:
COUNT|293|1|lps
bash中某处有错误吗?我会感到惊讶,我的Linux主机和使用busybox灰的嵌入式设备上的结果是一样的!任何指针都非常感谢!
修改 我的错,输出是stderr ...... ._。
./spawn 1 2>&1 | cut -d '|' -f2
4615
抱歉让人心烦!
答案 0 :(得分:8)
只是重复我在评论中猜到的答案,现在提问者已经确认这是问题所在。
这里的问题是./spawn 1
输出到标准错误,而不是标准输出。您可以使用2>&1
重定向输出,因此以下内容应该有效:
./spawn 1 2>&1 | cut -d '|' -f2
答案 1 :(得分:2)
$ echo 'COUNT|293|1|lps' | cut -d'|' -f2
293
它适用于此。