我有两个@
用于划分每一列的 CSV 文件。第一个文件 (file1.csv) 有两列:
cat @ eats fish
spider @ eats insects
第二个文件 (file2.csv) 有四列:
info @ cat @ info @ info
info @ spider @ info @ info
info @ rabbit @ info @ info
我需要将第一个文件第二列的信息添加到第二个文件的新列中,以防第一个文件的第一列和第二个文件的第二列的详细信息匹配,例如结果以上将使得:
info @ cat @ info @ info @ eats fish
info @ spider @ info @ info @ eats insects
info @ rabbit @ info @ info @
如上所示,由于第一个文件不包含有关兔子的信息,因此在第二个文件的最后一行添加了一个新的空列。
到目前为止,我知道该怎么做:
while read line
可用于循环浏览第二个文件中的行,例如:
while read line
do
(commands)
done < file2.csv
可以使用 来访问来自特定列的数据awk -F "@*" '{print $n}'
,其中n
是列号。
while read line
do
columntwo=$(echo $line | awk -F "@*" '{print $2})
while read line
do
columnone=$(echo $line | awk -F "@*" '{print $1})
if [ “$columnone” == “$columntwo” ]
then
(commands)
fi
done < file1.csv
done < file2.csv
我的方法似乎效率低下,我不确定如何使用将第二列中的数据添加file1.csv1
到file2.csv
.
- 第 1 列
file1.csv1
和第 2 列中的项目file2.csv
对于这些文件是唯一的。这些文件中没有重复的条目。 - 结果文件的每一行应该正好有 5 列,即使有些列是空的。
- 该文件包含大量来自各种语言的 UTF-8 字符。
- 周围有空白
@
,但如果这导致脚本出现问题,我可以删除它。
如何将第一个文件中的数据添加到第二个文件中的数据中?