如何使用 `md5sum` 处理 `awk` 的 `$1`?
How to use `md5sum` to process `$1` of `awk`?
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()
),例如md5sum --binary /boot/efi/EFI/debian/grubx64.efi
.
我的脚本是 awk '{ cmd = "md5sum --binary" close(cmd) $(NF+1) = (cmd()); print }' test > test_new
但出现如下错误:
awk: line 1: syntax error at or near =
我是 awk
的新手,有什么问题吗?
这个 awk
应该有效:
awk '{cmd = "md5sum --binary 7" "7";
if ((cmd | getline out) > 0) print [=10=], out; close(cmd)}' file.test
但是对于像这样的任务,bash
循环应该做得更好,因为我们只使用第一列调用外部程序:
while read -r col1 rest; do
echo "$col1 $rest" "$(md5sum --binary "$col1")"
done < file.test
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()
),例如md5sum --binary /boot/efi/EFI/debian/grubx64.efi
.
我的脚本是 awk '{ cmd = "md5sum --binary" close(cmd) $(NF+1) = (cmd()); print }' test > test_new
但出现如下错误:
awk: line 1: syntax error at or near =
我是 awk
的新手,有什么问题吗?
这个 awk
应该有效:
awk '{cmd = "md5sum --binary 7" "7";
if ((cmd | getline out) > 0) print [=10=], out; close(cmd)}' file.test
但是对于像这样的任务,bash
循环应该做得更好,因为我们只使用第一列调用外部程序:
while read -r col1 rest; do
echo "$col1 $rest" "$(md5sum --binary "$col1")"
done < file.test