这是使用cut使用空格定界符将输入分成多个字段并获得第二个字段的示例:

cut -f2 -d' '

如何将定界符定义为制表符,而不是空格?

评论

对不可打印的分隔符使用cut(stackoverflow)

Tab是默认的定界符。切-f 2

#1 楼

两种方法:
按Ctrl + V,然后按Tab以使用带引号的“ verbatim”插入。 />

评论


$''— bash'ism,AFAIR

– poige
2012年3月30日上午11:45

显然,它们都无法在Windows中运行(例如,Git Bash)。在此处使用@Mikel的答案(默认定界符为tab,只需省略-d参数)。

–艾哈迈德·法西(Ahmed Fasih)
2014年11月4日14:40



在脚本中包含$“美元符号前缀字符串”是什么意思?

– micrub
16年7月30日在23:11

@poige,来自ksh93,不是bash。至少由ksh93,zsh,bash,mksh和FreeBSD sh支持(这可能会使它成为sh的POSIX标准规范的下一个主要版本)。

–StéphaneChazelas
17-10-23在11:42

@micurb这是ANSI-C引用:gnu.org/software/bash/manual/html_node/ANSI_002dC-Quoting.html

– Wisbucky
17年12月8日在21:51

#2 楼

Tab是默认选项卡。

请参见裁切手册页。

-d delim
         Use delim as the field delimiter character instead of the tab
         character.


因此,您只需要编写

cut -f 2


评论


糟糕,没有注意到那条线。

–穆罕默德·哈桑·汗(Muhammad Hasan Khan)
2012年3月30日15:54

但是,出于可读性和可移植性,显式地提及此类标志可能总是更安全。我可以想象有人为Windows设计一个剪切版本时不会遵循完整的标准。

–威廉·范·昂森(Willem Van Onsem)
15年4月19日在12:32

这应该被接受的答案:最简单的代码,最简单的解释。 ya钉上它:youtube.com/watch?v=dpNTHl7y45Y

–神经网络
16年6月16日在21:28

这个答案改变了我的生活

–数学
17年4月28日在13:00

@WillemVanOnsem,如果有人为Windows编写了cut版本,但没有遵循POSIX规范,则没有理由假定任何POSIX脚本都可以在该系统上运行。坚持使用POSIX指定的功能。不要试图允许假设的未来不合规的实现;那不是“可移植性”的意思。

–通配符
19 Mar 26 '19在20:37

#3 楼

awk -F '\t' '{ print  }' inputfile


这将从inputfile中提取每行输入的第二个制表符分隔的字段。

评论


OP专门询问减产问题。而且,cut(1)比awk(1)更快。

– Tripp动力学
20 May 14 '19:10



#4 楼

更一般而言,不需要任何不可见的字符:使用tr将定界符转换为可以更轻松地指定为cut的格式。

$ echo -e "a\tb\tc" |tr '\t' ' ' |cut -d' ' -f2
b


tr很简单,但是功能强大的字符匹配和替换工具。

评论


但是如果输入的是abc(space)def(tab)ghi怎么办?您的答案将产生def,但应产生ghi。同样,如果输入为ABC(tab)DEF(space)GHI,则您的答案将为DEF,但应为DEF(space)GHI。

– G-Man说“恢复莫妮卡”
19 Mar 26 '19在20:26

@ G-Man:空格分隔符只是一个例子。使用适合您数据的定界符-例如逗号。 echo -e“ abc \ tdef ghi” | tr'\ t'','| cut -d','-f2

– nobar
19 Mar 26 '19在22:29

...但是,是的,如果定界符必须是制表符,那么我的方法将行不通。

– nobar
19 Mar 27 '19 at 0:04