请帮助sed命令文件

时间:2016-03-16 22:11:47

标签: linux bash unix sed

我创建了以下bash管道,它将获取“who”的输出并修改它以满足作业的要求

这是pipline:

who | sed -e "s/\b\(.\)/\u\1/g" | sed 's/[.]/ /g' | sed 's/ Pts\// TTY /g' | sed '1d' | sed -n 's/     .*$/ /gp'

将其放入一个如下所示的sed文件中:

s/\b\(.\)/\u\1/g
s/[.]/ /g
s/ Pts\// TTY /g
1d
s/     .*$/ /gp

然后像这样运行它:

who | sed -f sedfile

输出正确,因为所有内容的格式为:

firstName lastName TTY (a number)

然而,每行打印两次,管道正确打印每行

有人会碰巧知道这个问题吗?

1 个答案:

答案 0 :(得分:1)

这是最后一行的gp。您没有使用sed -n(无打印)运行,因此默认情况下您使用sed -yesprint(或其他)运行。然后你点击那个打印的gp,你得到两个副本。

转换为sed -n,或将gp更改为g。或者更好的是,摆脱它,因为匹配模式包含$,所以它只会在一个地方运行 - 行的结尾。