Shell Script 截取部份字串


写程式时经常需要截取字串中的一小部份, 很多程式语言都有类似 substr 等函式。在 Shell Script 虽然没有 substr() 或 substring() 的函式, 但要实现也很方便, 以下会介绍两种 Shell Script 下截取部份字串的方法。

${string:S:N} 写法

在 Shell Script 抽取字串, 最简单的方法是这样:

上面 Shell Script 执行结果是
s is a testing
s is a te

上面程式码第 4 行的 3, 代表开始头 3 个字符不要, 一直截取到字串结尾; 而第 5 行的 3:9 代表开始头 3 个字符不要, 抽取 9 个字符。

cut 指令

上面的方法只可以在 Shell Script 使用, 如果透过 cut 指令, 不论是指令模式或者 Shell Script 也适用, 例如:

$ echo “This is a testing” | cut -c1-11

以上指令会回传 “This is a t”, 其中 “This is a testing” 是原来完整的字串, “c1-11” 代表截取第 1 个字符至第 11 个字符.

除了指定要截取的字串外, 也可以用 -d 及 -f 参数, 以指令字符分割原来字串, 例如我想用空格分割 “This is a testing”, 并抽取其中第 4 组字串, 可以这样做:

$ echo “This is a testing” | cut -d” ” -f 4

这样会回传 “testing”, 如果想要抽取第 1 组字串, 可以改成这样:

$ echo “This is a testing” | cut -d” ” -f 1

这样就会回传 “This”.

如果在 Shell Script 下, 要将 cut 指令截取的字串放到变量, 可以这样写:

上面 Shell Script 执行结果是 “testing”.

Leave a Reply