awk.md

处理文件

awk '' $file_path

示例

1
2
3
4
5
6
extract_hosts_to_cluster_info() {
local hosts_file=$1
local cluster_info=$(awk '/^\s*[^#]/ && $2 ~ /.srhino.svc.local$/ && $2 !~ /^s/ && $2 !~ /^localhost/ {sub(/\.srhino\.svc\.local$/, "", $2); print $2"=http://"$1":2380"}' ${hosts_file} | paste -sd,)
echo $cluster_info
}

awk

  • awk 是一个强大的文本处理工具,用于模式扫描和处理。
  • 使用 /^\s*[^#]/ 来选择那些不以 # 开头的行,忽略了空白行和注释行。
  • $2 ~ /.srhino.svc.local$/ 确保第二个字段以 .srhino.svc.local 结尾。
  • $2 !~ /^s/ 确保第二个字段不是以 s 开头的。
  • $2 !~ /^localhost/ 排除任何以 localhost 开头的字段。
  • {sub(/\.srhino\.svc\.local$/, "", $2); print $2"=http://"$1":2380"} 首先用 sub() 函数删除字段中的 .srhino.svc.local 后缀,然后打印修改后的第二个字段和第一个字段(IP 地址)的组合,格式为 <hostname>=http://<ip>:2380

paste

  • paste 命令用于合并文件或标准输入的行。
  • -s 选项将所有输入行合并为单行。
  • -d, 设定字段间的分隔符为逗号 ,

awk.md
https://abrance.github.io/2024/03/29/mdstorage/domain/linux/awk/
Author
xiaoy
Posted on
March 29, 2024
Licensed under