获取第一个/第二个文件列

获取第一个/第二个文件列

我这里有两个 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 有一个列。

相关内容