我想使用空格作为cut命令的分隔符。

我可以使用什么语法呢?


当前回答

sccut,一个类似cut的实用程序(我做的更聪明但更慢),可以使用任何perl regex作为中断令牌。在空格上中断是默认的,但您也可以在多字符正则表达式、替代正则表达式等上中断。

scut -f='6 2 8 7' < input.file  > output.file

因此,上面的命令将在空格上打断列,并按此顺序提取(以0为基数)cols 6 2 8 7。

其他回答

你也可以说:

cut -d\  -f 2

注意,反斜杠后面有两个空格。

cut -d ' ' -f 2

其中2是所需空格分隔字段的字段号。

我刚刚发现你也可以使用"-d ":

cut "-d "

Test

$ cat a
hello how are you
I am fine
$ cut "-d " -f2 a
how
am

sccut,一个类似cut的实用程序(我做的更聪明但更慢),可以使用任何perl regex作为中断令牌。在空格上中断是默认的,但您也可以在多字符正则表达式、替代正则表达式等上中断。

scut -f='6 2 8 7' < input.file  > output.file

因此,上面的命令将在空格上打断列,并按此顺序提取(以0为基数)cols 6 2 8 7。

如果数据有多个空格,你就不能简单地用cut来做。我发现规范化输入有助于简化处理。一个技巧是使用sed进行规范化,如下所示。

echo -e "foor\t \t bar" | sed 's:\s\+:\t:g' | cut -f2  #bar