Redian新闻
>
请问怎么把两个行数相等的文件合并起来?
avatar
请问怎么把两个行数相等的文件合并起来?# Linux - Linux 操作系统
w*e
1
比如都有n行,就把第二个文件的每一行都放在第一个文件相对行的后面?
avatar
y*g
2
写个程序不难吧

【在 w*******e 的大作中提到】
: 比如都有n行,就把第二个文件的每一行都放在第一个文件相对行的后面?
avatar
c*0
3
随便写了一个shell的,
FILE_A=$1;
FILE_B=$2;
NEW_FILE=$3;
count=0;
while read line ; do
count=`expr $count + 1`;
newline=`head -n $count $FILE_B | tail -n 1`

#echo "$line $newline" >> $NEW_FILE
echo "$line $newline"
done < $FILE_A ;
avatar
k*f
4
join命令

【在 w*******e 的大作中提到】
: 比如都有n行,就把第二个文件的每一行都放在第一个文件相对行的后面?
avatar
l*g
5
用 paste 命令也可以啊
avatar
w*e
6
join好像要求两个文件中有一列是匹配的吧?
比如
1 A
2 B
3 C
4 D

1 a
2 b
3 c
4 d
join之后就是
1 A a
2 B b
3 C c
4 D d

我的问题是如果两个文件只是行相等,但是没有匹配行应该怎么办呢?我能想到的是用
AWK先打印出来NR再用join,能不能用join直接做呢?

【在 k****f 的大作中提到】
: join命令
avatar
E*V
7
en, you can easily add one filed and delete it
awk '{print i,$0; i = i + 1;}' f1 > f1.tmp
....f2.tmp
join .... > f3.tmp
cut ...

【在 w*******e 的大作中提到】
: join好像要求两个文件中有一列是匹配的吧?
: 比如
: 1 A
: 2 B
: 3 C
: 4 D
: 和
: 1 a
: 2 b
: 3 c

avatar
l*n
8
awk '{a=$0;getline < "filename2"; printf "%s %s\n", a, $0}' filename1

【在 w*******e 的大作中提到】
: 比如都有n行,就把第二个文件的每一行都放在第一个文件相对行的后面?
avatar
r*o
9
恩,不错.
发现awk对列操作最爽快

【在 l******n 的大作中提到】
: awk '{a=$0;getline < "filename2"; printf "%s %s\n", a, $0}' filename1
avatar
f*g
10
paste 应是最简单的
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。