我正在尝试编写一个脚本,该脚本提取两个相似数据集的已更改列,这些数据集存储为两个不同文件中的表格数据。这是一个例子:
启动file1.txt的数据:
COLUMN_1 COLUMN_2 COLUMN_3
-------- -------- --------
Value_1 Value_2 Value_3
更改了file2.txt的数据:
COLUMN_1 COLUMN_2 COLUMN_3
-------- -------- --------
Value_1 newValue Value_3
结果数据:
COLUMN_2
--------
newValue
您建议使用哪些工具?我在想awk或python?
更新:
犯了一个小错误,结果应显示newValue
答案 0 :(得分:0)
awk
救援!
$ paste file1 file2 |
awk 'NR==1 {split($0,h1)}
NR==2 {split($0,h2)}
{m=NF/2;
for(i=1;i<=m;i++) if($i!=$(i+m)) d[i]=$i;
for(i=1;i<=m;i++) if(i in d) print h1[i];
for(i=1;i<=m;i++) if(i in d) print h2[i];
for(i=1;i<=m;i++) if(i in d) print d[i]}'
COLUMN_2
--------
Value_2
答案 1 :(得分:0)
Python中的涂鸦:
with open(fn1) as f1, open(fn2) as f2:
head1, head2 = [next(fh).split() for fh in (f1, f2)]
sep1, sep2 = [next(fh).split() for fh in (f1, f2)]
v1, v2 = [next(fh).split() for fh in (f1, f2)]
for i, (fi1, fi2) in enumerate(zip(v1, v2)):
if fi1!=fi2:
print('{}\n{}\n{}'.format(head2[i], sep2[i], fi2))
打印:
COLUMN_2
--------
newValue
但是,如果您的值和空格中含有空格,那么就会出现问题(如awk
解决方案一样)。
如果您使用其他分隔符,请在此文件中更改.split('character_that_is_delimiter')
(或者,更好的是,使用csv模块...)