使用sed文件|sed文件|head文件忽略管道的除最后部分以外的所有部分

js81xvg6  于 2022-10-17  发布在  Unix
关注(0)|答案(1)|浏览(155)

我正在尝试使用Unix中的管道命令替换一些单词(Sed),然后使用head命令显示文件的前9行。但是,HEAD命令会擦除sed命令,并自行执行该命令。以下是我正在尝试做的事情:

$ sed 's/[n]d/nd STREET/g' street | sed 's/[r]d/rd STREET/g' street | head -n 9 street
01 m motzart        amadeous        25 2nd 94233
02 m guthrie        woody           23 2nd 94223
03 f simone         nina            27 2nd 94112
04 m lennon         john            29 2nd 94221
05 f harris         emmylou         20 2nd 94222
06 m marley         bob             22 2nd 94112
07 f marley         rita            26 2nd 94212
08 f warwick        dione           26 2nd 94222
09 m prine          john            35 3rd 94321
mlmc2os5

mlmc2os51#

sedhead仅在没有指定要读取的文件名时才从stdin读取。因此,当您将head命名为street时,它会忽略其标准输入(即sed的输出所在的位置)。
仅在管道的最前面提供一次文件名。

$ <street sed -e 's/[n]d/nd STREET/g' -e 's/[r]d/rd STREET/g' | head -n 9

顺便说一句,您还可以编写这段代码,使其只使用一个sed操作来同时处理ndrd

$ <streed sed -e 's/\([rn]d\)/&1 STREET/g' | head -n 9

相关问题