大家好,我是一个喜欢研究算法、机械学习和生物计算的小青年,我的CSDN博客是:一骑代码走天涯
如果您喜欢我的笔记,那么请点一下关注、点赞和收藏。如果內容有錯或者有改进的空间,也可以在评论让我知道。😄
Bash环境的 cut
指令
在一般的编程经历来说,手动从一个字串 (string) 撷取一个子字串 (substring) 是一个必不可少的动作,无论你是写 python, C/C++ 或者 Java 都一定试过。但是,如果今天你写的是 Bash 呢?
Bash 有一个内置的指令 cut
,加以善用便能帮助你的工作更快的完成。
Command: cut -cN-M
第一个方法是直接用 cut -N-M
的方式撷取想要的 substring, 当中 N
和 M
分别是 子字串在主字串的起始位置和终止位置 。举几个栗子:
$ 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/