对那些头衔不好的人表示抱歉,除了示例以外,我不怎么描述。
所以我们要走了,我必须要存放以下文件:
文件1:
left1
left2
left3
文件2
right1
right2
right3
预期输出:
left1 right1
right2 left2
left3 right3
我知道我们可以使用粘贴命令将这两个文件并排合并,但是我不知道现在该如何使其像上面的输出一样。
root@s132496:~# paste -d ' ' file1 file2
left1 right1
left2 right2
left3 right3
我读了粘贴的人,但仍然不知道该怎么做。请帮我解决这个问题,从早上起一直没有运气。
在人们之前感谢您!
答案 0 :(得分:3)
由于您尚未告诉我们Input_file中有多少个字段,我们是否需要始终交换第二行的字段等内容,因此仅通过查看示例即可发布此内容。
paste -d" " file1 file2 | awk 'FNR==2{$0=$2 OFS $1} 1'
答案 1 :(得分:2)
使用awk,您可以执行以下操作:
awk 'NR==FNR{a[FNR]=$0;next}FNR%2{print $0, a[FNR];next}{print a[FNR], $0}' file1 file2
展开:
awk 'NR == FNR { # For first input file (file1)
a[FNR] = $0 # Store the current line in a new entry in array a
next # and skip to the next record
}
FNR % 2 { # If the line number is odd
print $0, a[FNR] # print in one order
next # and skip to the next record
}
{ # for the rest lines (file2 even lines)
print a[FNR], $0 # print in opposite order
}' file1 file2
这里的假设是file1
足够小以适合内存,否则请使用cut and pipe到awk,但这仅在file1和file2的行中没有空格时才起作用。 / p>