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

如何使用`md5sum`处理`awk`的`$1`?

如何解决如何使用`md5sum`处理`awk`的`$1`?

test 文件为例:

cat <<'EOF'> test
/boot/efi/EFI/debian/grubx64.efi root root 700 1625230722
/boot/efi/EFI/debian/mmx64.efi root root 700 1625230722
/boot/efi/EFI/debian/shimx64.efi root root 700 1625230722
/boot/grub/fonts/unicode.pf2 root root 644 1625230723
EOF

我打算在 test 文件中再添加一列,新添加的列的值取决于第一列 (md5sum --binary($1)),例如 md5sum --binary /boot/efi/EFI/debian/grubx64.efi

我的脚本是 awk '{ cmd = "md5sum --binary" close(cmd) $(NF+1) = (cmd($1)); print }' test > test_new 但出现如下错误

awk: line 1: Syntax error at or near =

我是 awk 的新手,有什么问题?

解决方法

这个 awk 应该可以工作:

awk '{cmd = "md5sum --binary \047" $1 "\047"; 
if ((cmd | getline out) > 0) print $0,out; close(cmd)}' file.test

但是对于这样的任务,bash 循环应该做得更好,因为我们只使用第一列调用外部程序:

while read -r col1 rest; do
   echo "$col1 $rest" "$(md5sum --binary "$col1")"
done < file.test

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。