linux cut 最后一个字符,linux - 如何使用'cut'找到最后一个字段
linux - 如何使用'cut'找到最后一个字段
不使用sed或awk,仅使用cut,如果字段数未知或每行更改,如何获取最后一个字段?
noobcoder asked 2019-03-15T12:47:58Z
11个解决方案
450 votes
你可以尝试这样的事情:
echo 'maps.google.com' | rev | cut -d'.' -f 1 | rev
说明
maps.google.com的反向将是com
com使用点作为分隔符并选择第一个字段,即moc
最后,我们再次反转(感谢提醒,@ tom)获得com
zedfoxus answered 2019-03-15T12:48:42Z
95 votes
使用参数扩展。 这比任何类型的外部命令,包括cut(或grep)更有效。
data=foo,bar,baz,qux
last=${data##*,}
有关bash中本机字符串操作的介绍,请参阅BashFAQ#100。
Charles Duffy answered 2019-03-15T12:49:16Z
65 votes
不可能只使用cut.这是使用grep的方法:
grep -o '[^,]*$'
替换其他分隔符的逗号。
tom answered 2019-03-15T12:49:58Z
14 votes
没有awk?...但是用awk这么简单:
echo 'maps.google.com' | awk -F. '{print $NF}'
AWK是一种更强大的工具,可放在口袋里。-F如果是字段分隔符NF是字段数(也代表最后一个的索引)
Amir Mehler answered 2019-03-15T12:50:36Z
12 votes
有多种方式。 你也可以使用它。
echo "Your string here"| tr ' ' '\n' | tail -n1
> here
显然,tr命令的空格输入应该用你需要的分隔符替换。
rjni answered 2019-03-15T12:51:21Z
5 votes
这是唯一可以使用除切割之外的解决方案:
echo“s.t.r.i.n.g。”| 切-d'。'-f2- [repeat_following_part_forever_or_until_out_of_memory:] | 切-d'。'-f2-
使用这种解决方案,字段的数量确实是未知的,并且不时变化。 但是,由于行长度不得超过LINE_MAX字符或字段(包括换行符),因此任意数量的字段都不能成为此解决方案的真实条件。
是的,这是一个非常愚蠢的解决方案,但是我认为唯一符合标准的解决方案。
A friend answered 2019-03-15T12:52:22Z
1 votes
以下实现了朋友的建议
#!/bin/bash
rcut(){
nu="$( echo $1 | cut -d"$DELIM" -f 2- )"
if [ "$nu" != "$1" ]
then
rcut "$nu"
else
echo "$nu"
fi
}
$ export DELIM=.
$ rcut a.b.c.d
d
user2166700 answered 2019-03-15T12:52:54Z
0 votes
如果您有一个名为filelist.txt的文件,它是一个列表路径,如下所示:C:/dir1/dir2/file1.hC:/dir1/dir2/dir3/file2.h
然后你可以这样做:rev filelist.txt | cut -d“/” - f1 |转
aperson1961 answered 2019-03-15T12:53:44Z
0 votes
我意识到如果我们只确保存在一个尾随分隔符,它就可以工作。 所以在我的情况下,我有逗号和空格分隔符。 我在最后加了一个空格;$ ans="a, b"
$ ans+=" "; echo ${ans} | tr ',' ' ' | tr -s ' ' | cut -d' ' -f2
b
AnneTheAgile answered 2019-03-15T12:54:17Z
0 votes
如果您的输入字符串不包含正斜杠,那么您可以使用|和子shell:
$ basename "$(echo 'maps.google.com' | tr '.' '/')"
这不使用|或awk,但它也不使用cut,所以我不太确定它是否有资格作为其措辞的问题的答案。
如果处理可以包含正斜杠的输入字符串,则这不起作用。 这种情况的解决方法是将正斜杠替换为您知道不属于有效输入字符串的其他字符。 例如,管道(|)字符也不允许在文件名中,因此这将起作用:
$ basename "$(echo 'maps.google.com/some/url/things' | tr '/' '|' | tr '.' '/')" | tr '|' '/'
jstine answered 2019-03-15T12:55:05Z
-1 votes
你可以用bash shell编写一个小程序。
你可以参考我的bash shell [https://www.huuphan.com/2018/06/split-string-in-shell-and-get-last-field.html]
我希望这对你有所帮助!
Phan Văn Hữu answered 2019-03-15T12:55:54Z
linux cut 最后一个字符,linux - 如何使用'cut'找到最后一个字段相关推荐
- java去除字符串中最后一个字符_java中字符串如何去除最后一个字符方法
java中字符串如何去除最后一个字符方法. 方法有很多.不过如果只是个测试,那哪种都可以. 最简单易懂的方法 利用substring()与length() String str = "abc ...
- c语言输入一个字符判断是字母还是数字,输入一个字符,如何判断是字母,数字还是特殊字符...
输入一个字符,如何判断是字母,数字还是特殊字符 方法如下: 1.使用格式符%c获得输入的字符: 2.判断该字符在ascii码表中的位置即可.#include int main(){ char ch; ...
- linux查看文件隐藏字符,Linux使用cat命令显示隐藏字符的方法
Linux系统中,使用普通的文本编辑器查看的时候,有些字符是不显示的,这就需要使用到cat命令来查看,下面小编就给大家介绍下Linux使用cat命令查看隐藏字符的方法,一起来了解下吧. 首先,我们创建 ...
- linux查看文件隐藏字符,Linux查看整个文件
Linux查看整个文件 使用cat命令显示文本文件的内容 使用cat命令可以显示文本文件的内容.cat后面可以不加任何选项,直接跟文件名 功能说明:查看某个文件的内容 cat命令语法 cat [参数] ...
- linux显示3个字符,Linux驱动学习笔记(3)字符设备驱动
今天对程序进行编译,结果出现 make -C /lib/modules/3.3.2-6.fc16.x86_64/build M=/home/jqzeng/workSpace/ldd3/ldd3-sam ...
- linux回到命令首字符,Linux 命令词典选段
Linux基础命令(注意字母大小写) ls -a 显示所有文件包括隐藏文件 ls -l 显示详细信息 ls -F 目录后加一符号,可执行文件加*,文件夹加/ cd - 回到上一步操作目录 cd ~ ...
- linux 日志检索特定字符,linux – 用于等待日志文件中特定字符串的Bash脚本优化...
我正在使用一个bash脚本调用多个进程,这些进程必须按特定顺序启动,并且必须完成某些操作(然后它们会将某些消息打印到日志中),然后才能启动下一个进程. bash脚本具有以下代码,适用于大多数情况: t ...
- c语言删除一个字符指令,【C语言】实现一个基于命令行的文本编辑器
选择本项目作业的同学,必须本人独立完成. 功能: 1. 打开文件 2. 保存文件 3. 能够对文件进行查找 4. 能够对文件进行替换 5. 能够对文件进行删除 要求: 1. 不能使用Cstring.h ...
- java一个中文几个字节_java一个汉字占几个字节;一个字符占几个字节?redis一个汉字占几个字节;一个字符占几个字节?...
脱离字符集编码 谈这个问题没什么实际意义 我不知道你讲的Java 中汉字是几个字节具体是什么意思 Java 中 Character 采用的是 utf-16 编码,那么就是两个字节(0----65535 ...
最新文章
- 求求你了,配个GC日志呗,不然咋分析故障原因
- tableau可视化数据分析60讲(十二)-过滤器详解
- 成功解决from nets import inception_resnet_v2 ModuleNotFoundError: No module named 'nets'
- mysql ha_err_key_not_found_mysql主从同步报错:Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND...
- Java并发线程之线程池
- [noi2005][treap]序列维护
- 【洛谷】【线段树】P1047 校门外的树
- 选拔人才要关注的七个方面
- 中国黑客传说:游走在黑暗中的精灵
- iPhone 日历事件自动消失
- 【题解】[Swerc2008]First Knight
- Nginx动静分离配置
- git commit -m text /git commit -s -m /git commit -a -m /git commit -a -s
- 无任何格外需求的命令行C++飞机大战,内含BOSS,动画,千行代码免费奉上
- java白盒测试代码_Java白盒测试
- java 获取图片像素_转:java提取图片中的像素
- php主动推送弹幕_百万在线的美拍直播弹幕系统的实时推送技术实践之路
- 搭建k8s的服务器硬件选型
- 顺差和逆差,哪个好点?
- 关于如何办好培训的感想