10.1.1 使用 awk 处理字符串

在 Bash 脚本中可以调用字符串处理工具 awk 来替换内置的字符串处理操作。

样例 10-6. 使用另一种方式来截取和定位子字符串

1. #!/bin/bash
2. # substring-extraction.sh

4. String=23skidoo1
5. #      012345678    Bash
6. #      123456789    awk
7. # 注意不同字符串索引系统:
8. # Bash 中第一个字符的位置为0。
9. # Awk 中第一个字符的位置为1。

11. echo ${String:2:4} # 从第3位开始(0-1-2),4个字符的长度
12. # skid

14. # Awk 中与 ${string:pos:length} 等价的是 substr(string,pos,length)。
15. echo | awk '
16. { print substr("'"${String}"'",3,4)      # skid
17. }
18. '
19. #  将空的 "echo" 通过管道传递给 awk 作为一个模拟输入,
20. #+ 这样就不需要提供一个文件名来操作 awk 了。

22. echo "----"

24. # 同样的:

26. echo | awk '
27. { print index("'"${String}"'", "skid")      # 3
28. }                                           # (skid 从第3位开始)
29. '   # 这里使用 awk 等价于 "expr index"。

31. exit 0