【Bash】 从string擷取substring的小指令

大家好,我是一个喜欢研究算法、机械学习和生物计算的小青年,我的CSDN博客是:一骑代码走天涯
如果您喜欢我的笔记,那么请点一下关注、点赞和收藏。如果內容有錯或者有改进的空间,也可以在评论让我知道。😄

B​ash环境的 cut 指令

在一般的编程经历来说,手动从一个字串 (​string) 撷取一个子字串 (substring) 是一个必不可少的动作,无论你是写 python, C/C++ 或者 Java 都一定试过。但是,如果今天你写的是 Bash 呢?

B​ash 有一个内置的指令 cut,加以善用便能帮助你的工作更快的完成。

Command: cut -cN-M

第一个方法是直接用 cut -N-M 的方式撷取想要的 substring, 当中 NM 分别是 子字串在主字串的起始位置和终止位置 。举几个栗子:

$ echo "abcde" | cut -c2-4
bcd
$ pwd  #查看所在路徑
/​home/user/My_file
$ pwd | cut -c2-5  # 把 pwd 输出导入到 cut
home 

Command: cut -d DELIM -f FIELD

如果你的字串是有带分隔符号,那可以运用cut的​-d-f options 利用分隔符号帮你撷取不同栏的资料。-d- 可以用来指定分隔符号; 而-f是用来指定栏号

$ echo "111-222-333-abc" | cut -d '-' -f 1
111
$ echo "111-222-333-abc" | cut -d '-' -f 2,4
222-abc
$ more text.txt  #演示用文本,用空白键做分隔
Name School Sport
Lee School1 Football
Ken School2 Swimming
Peter School3 Running
$ cut -d ' ' -f 1-2 text.txt  #撷取第一和第二栏资料
Name School
Lee School1
Ken School2
Peter School3

Command: echo ${VARIABLE:N:M}

如果要写 bash script,有时侯我们会把字串设定在变量中,那其实不用额外的指令,只需要变量本身和 ${} 就能做到分隔的效果。例子如下:

$ AAA=YOUR-STRING
$ echo ${AAA:1} #从1号位置字符开始到尾
OUR-STRING
$ echo ${AAA:1:2} #只取1号位置到2号位置子字串
OU
$ echo ${AAA:0:6} #从头取到6号位置
YOUR-S

Reference/参考资料:

https://stackabuse.com/substrings-in-bash/
https://linuxhint.com/linux_cut_command_examples/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值