微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

awk,在大括号中执行 cmds 时的范围

如何解决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 举报,一经查实,本站将立刻删除。