如何将一行(空格分隔)和一个文件(每行一个值)组合成一个?

时间:2013-02-14 16:15:15

标签: sed awk

给定一行

    100  90  80  70  60  50  40  30  20  10   0

和文件

1
2
3
4
5
6
7
8
9
10
11

如何将这两者合并为一个读取

的文件
100 1
90  2
80  3
70  4
60  5
50  6
40  7
30  8
20  9
10  10
0  11

我猜sedawk是我的朋友,但对他们没有经验......

4 个答案:

答案 0 :(得分:3)

或使用trpaste

$ tr ' ' '\n' < file1 | paste - file2
100     1
90      2
80      3
70      4
60      5
50      6
40      7
30      8
20      9
10      10
0       11

答案 1 :(得分:1)

$ cat file2
1
2
3
4
5
6
7
8
9
10
11
$
$ cat file1
100    90        80  70      60 50 40 30 20 10 0
$
$ $ gawk '!NF{next} NR==FNR{a[++nr1]=$0;next} {print $0,a[++nr2]}' file2 RS="[[:space:]]+" file1
100 1
90 2
80 3
70 4
60 5
50 6
40 7
30 8
20 9
10 10
0 11

答案 2 :(得分:0)

尝试这样做:

paste <(printf '%s\n' 100 90 80 70 60 50 40 30 20 10 0) file.txt

在此镜头中,paste进程替换&amp; printf是你的朋友=)

输出

100     1
90      2
80      3
70      4
60      5
50      6
40      7
30      8
20      9
10      10
0       11

答案 3 :(得分:0)

另一个awk:

awk '{if(NR==1) split($0,N); else print N[FNR], $0}' file1 file2