我正在尝试使用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
1条答案
按热度按时间mlmc2os51#
sed
和head
仅在没有指定要读取的文件名时才从stdin读取。因此,当您将head
命名为street
时,它会忽略其标准输入(即sed
的输出所在的位置)。仅在管道的最前面提供一次文件名。
顺便说一句,您还可以编写这段代码,使其只使用一个sed操作来同时处理nd和rd: