我想比较A.txt中每一行的第一个元素和B.txt行的第一个元素,如果它们匹配打印那条A行,A和B的第一行元素都是十六进制数,我写了以下代码基于https://askubuntu.com/questions/366879/awk-comparing-the-value-of-two-variables-in-two-different-files .
#!/bin/bash
A="$HOME/A.txt"
B="$HOME/B.txt"
cat $A | while read a; do
a1=$(echo $a | awk ' { print $1 }')
cat $B | while read b; do
b1=$(echo $b | awk ' { print $1 }')
if [ $a1 == $b1 ]; then
echo $a
fi
done
done
这是我得到的:第9行:[0x6200e001:命令未找到
2 回答
如果您的代码中
[
和$a1
之间没有空格,则会出现此问题 . 始终测试您发布的确切代码 - 不要认为您的干净版本会出现与实际代码相同的问题 .以下是如何重现它:
修复是添加空间:
您应该最佳地引用变量以防止出现空格和glob字符的问题:
使用awk替换所有