我这里有两个 for 循环
for i in $(cat "firstFile.txt")
do
for j in $(cat "secondFile.txt")
do
if [ "$i" = "$j" ]; then
echo $i[$2] # use first file second column
fi
done
done
我比较字符串,如果它们相同,我想echo $i[$2]
打印firstFile.txt
第二列。可以这样做吗?
答案1
这可以通过以下方式轻松完成awk
:
awk 'NR==FNR { a[$1] = $2; next; } { if ($1 in a) { print $1, a[$1]; } }' firstFile.txt secondFile.txt
这将打印第一个文件中匹配的值和第二列。
或者您可以尝试以下方法:
#!/bin/bash
while IFS=' ' read -r -a arr; do
while read j; do
if [ "${arr[0]}" = "$j" ]; then
echo "${arr[0]} ${arr[1]}"
fi
done < secondFile.txt
done < firstFile.txt
假设 firstFile.txt 中的第一列和第二列由空格分隔,并且 secondaryFile.txt 有一个列。