cut
使用空格定界符将输入分成多个字段并获得第二个字段的示例:cut -f2 -d' '
如何将定界符定义为制表符,而不是空格?
#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
评论
对不可打印的分隔符使用cut(stackoverflow)Tab是默认的定界符。切-f 2