10.1.1 使用 awk 处理字符串

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

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

  1. #!/bin/bash
  2. # substring-extraction.sh
  3. String=23skidoo1
  4. # 012345678 Bash
  5. # 123456789 awk
  6. # 注意不同字符串索引系统:
  7. # Bash 中第一个字符的位置为0。
  8. # Awk 中第一个字符的位置为1。
  9. echo ${String:2:4} # 从第3位开始(0-1-2),4个字符的长度
  10. # skid
  11. # Awk 中与 ${string:pos:length} 等价的是 substr(string,pos,length)。
  12. echo | awk '
  13. { print substr("'"${String}"'",3,4) # skid
  14. }
  15. '
  16. # 将空的 "echo" 通过管道传递给 awk 作为一个模拟输入,
  17. #+ 这样就不需要提供一个文件名来操作 awk 了。
  18. echo "----"
  19. # 同样的:
  20. echo | awk '
  21. { print index("'"${String}"'", "skid") # 3
  22. } # (skid 从第3位开始)
  23. ' # 这里使用 awk 等价于 "expr index"。
  24. exit 0