为什么这个`sed ...

为什么这个`sed ...

以下 sed 返回 ( ...| od -c),不带...|cut -d "\n" -f

0000000   1   9   2  \n   2   5   0  \n
0000010

伪代码

# http://unix.stackexchange.com/a/290407/16920
sed -n -f - /usr/share/X11/xkb/symbols/us <<END_SED | cut -d "\n" -f1 
/xkb_symbols "dvorak" {/,/^};/{
        /xkb_symbols "dvorak" {/=
        /^};/=
}
END_SED

但输出空白。

系统:Ubuntu 16.04 64 位
硬件:Macbook Air 2013-mid
Sed:4.2.2
Cut,od:Coreutils 8.25

答案1

cut实用程序“切断”一个或多个从它的输入中。与许多其他 Unix 实用程序一样,cut它是一个基于流的逐行读取器,它将其处理应用于每一行输入,然后继续处理下一行。

您不能将其用作\n分隔符,cut因为这是它所期望的分隔行。

一种迂回的方式创造要使用的两列cut将是使用paste。该paste实用程序还逐行读取输入,但它会根据您提供的规范将其缓冲并输出到制表符分隔的列中。

在这种情况下:

$ mycommand | paste - -
192     250

然后cut添加:

$ mycommand | paste - - | cut -f1
192

相关内容