@
各列を分割するために使用する2つのCSVファイルがあります。最初のファイル (file1.csv) には 2 つの列があります。
cat @ eats fish
spider @ eats insects
2 番目のファイル (file2.csv) には 4 つの列があります。
info @ cat @ info @ info
info @ spider @ info @ info
info @ rabbit @ info @ info
最初のファイルの最初の列と 2 番目のファイルの 2 番目の列の詳細が一致する場合、最初のファイルの 2 列目の情報を 2 番目のファイルの新しい列に追加する必要があります。上記の場合、次のようになります。
info @ cat @ info @ info @ eats fish
info @ spider @ info @ info @ eats insects
info @ rabbit @ info @ info @
上記のように、最初のファイルにはウサギに関する情報が含まれていなかったため、2 番目のファイルの最後の行に新しい空の列が追加されています。
これまでのところ、私が知っている方法は次のとおりです。
while read line
2 番目のファイルの行を循環するために使用できます。
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
私のアプローチは非効率的で、 の 2 列目のデータをfile1.csv1
の新しい列に追加する方法がわかりませんfile2.csv
。
file1.csv1
の列 1と列 2 の項目は、file2.csv
それらのファイルに固有です。これらのファイル内に重複するエントリはありません。- 結果のファイルには、一部の列が空の場合でも、各行に正確に 5 列が含まれている必要があります。
- このファイルには、さまざまな言語の文字が UTF-8 で多数含まれています。
- の周りに空白があります
@
が、これがスクリプトに問題を引き起こす場合は、これを削除できます。
最初のファイルのデータを 2 番目のファイルのデータに追加するにはどうすればよいですか?