如何解决awk,在大括号中执行 cmds 时的范围
aaa|bbb|ccc
eee|fff|ggg
我只想标记“|”并创建从一个索引 val 到另一个的映射。 例如,如果键是 col 1(不是基于零的索引)并且 val 是 col 3,我的地图应该是:
aaa -> ccc
eee -> ggg
解决方法
$ awk -F'|' '{map[$1]=$3} END{for (key in map) printf "map[%s]=%s\n",key,map[key]}' file
map[aaa]=ccc
map[eee]=ggg
如果您想在 bash 中创建地图数组:
$ declare -A map
$ while IFS='|' read -r key _ val; do map["$key"]="$val"; done < file
$ declare -p map
declare -A map=([eee]="ggg" [aaa]="ccc" )
但如果您正在考虑将其用于进一步的文本处理,请参阅 https://unix.stackexchange.com/questions/169716/why-is-using-a-shell-loop-to-process-text-considered-bad-practice。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。