我有两个文件:
文件1:
car_type, speed, direction, Lat, Lng
Ford, 40mph, 120, 32.44, -123.25
文件2:
Lat, Lng, airplane_type, #_of_passengers, airline
36.78,-124.21, Boeing 747, 150, United
我想合并它们来创建一个看起来像这样的文件:
car_type, speed, direction, Lat, Lng, airplane_type, #_of_passengers, airline
Ford,40mph,120,32.44,-123.25,,,
,,,36.78,-124.21,Boeing 747,150,United
最终结果是一个逗号分隔的文件,在File1条目的末尾始终有3个空列,在File2条目的开头有3个空列。但是,Lat和Lng字段将对齐。
我不想加入类似的值,我想APPEND第一个和第二个文件,以便它共享相同的列而不是行。
Another example
File 1:
Car_Type, color, speed, lat, lng
Ford, White, 35, 34.567, -123.234
Toyota, Blue,145, 34.657, -123.255
Honda, Black, 25, 35.587, -123.689
File 2:
Store,lat,lng
Walgreens, 32.123, -123.546
Target, 32.487, -123.594
WalMart, 32.986, -123.165
Result:
Car_Type, color, speed, lat, lng, Store
Ford, White, 35, 34.567, -123.234, <NULL>
Toyota, Blue,145, 34.657, -123.255, <NULL>
Honda, Black, 25, 35.587, -123.689, <NULL>
<NULL>, <NULL>, <NULL>, 32.123, -123.546, Walgreens
<NULL>, <NULL>, <NULL>, 32.487, -123.594, Target
<NULL>, <NULL>, <NULL>, 32.986, -123.165, WalMart
根据列File1 Lat = File2Lat&amp;找到将合并的脚本。 File1 Lng = File2 Lng,以便将这些列指定为对齐。其他不相似的列只是连接在一起。注意:NULL表示只是一个空字段,不需要格式化。
答案 0 :(得分:0)
你走了:
#!/bin/sh
{
echo 'car_type, speed, direction, Lat, Lng, airplane_type, #_of_passengers, airline'
tail -n +2 file1.txt | sed s/$/,,,/
tail -n +2 file2.txt | sed s/^/,,,/
}
说明:
,,,
追加到行尾,,,
添加到行的开头{...}
内,因此您可以轻松地将整个内容重定向到文件答案 1 :(得分:0)
如果您的输入文件包含多行数据,这可能是您想要的,具体取决于您想要输出的内容:
awk '
NR==FNR { a[FNR]=$0; next }
FNR==1 { sub(/([^,]+,){2}/,"") }
{ print a[FNR] (FNR==1 ? "," : ",,,\n,,,") $0 }
' file1 file2