zed*_*xus 584
你可以尝试这样的事情:
echo 'maps.google.com' | rev | cut -d'.' -f 1 | rev
Run Code Online (Sandbox Code Playgroud)
说明
moc.elgoog.spam
cut
使用点作为分隔符并选择第一个字段,即 moc
com
Cha*_*ffy 115
使用参数扩展.这比包含的任何类型的外部命令cut
(或grep
)更有效.
data=foo,bar,baz,qux
last=${data##*,}
Run Code Online (Sandbox Code Playgroud)
有关bash中本机字符串操作的介绍,请参阅BashFAQ#100.
tom*_*tom 80
使用它是不可能的cut
.这是一种使用方式grep
:
grep -o '[^,]*$'
Run Code Online (Sandbox Code Playgroud)
替换其他分隔符的逗号.
Ami*_*ler 31
没有awk?...但是用awk这么简单:
echo 'maps.google.com' | awk -F. '{print $NF}'
Run Code Online (Sandbox Code Playgroud)
AWK是一种更强大的工具,可放在口袋里.-F如果用于字段分隔符NF是字段数(也代表最后一个的索引)
小智 13
有多种方式.你也可以使用它.
echo "Your string here"| tr ' ' '\n' | tail -n1
> here
Run Code Online (Sandbox Code Playgroud)
显然,tr命令的空格输入应该用你需要的分隔符替换.
小智 7
这是唯一可以使用除切割之外的解决方案:
echo"string"| 切-d'.' -f2- [repeat_following_part_forever_or_until_out_of_memory:] | 切-d'.' -f2-
使用这种解决方案,字段的数量确实是未知的,并且不时变化.但是,由于行长度不得超过LINE_MAX字符或字段(包括换行符),因此任意数量的字段都不能成为此解决方案的真实条件.
是的,这是一个非常愚蠢的解决方案,但是我认为唯一符合标准的解决方案.
最好awk
在处理表格数据时使用。如果可以通过 实现awk
,为什么不使用它呢?我建议您不要浪费宝贵的时间,并使用少量命令来完成工作。
例子:
# $NF refers to the last column in awk
ll | awk '{print $NF}'
Run Code Online (Sandbox Code Playgroud)