将文件合并为一对多

时间:2010-11-25 08:08:31

标签: linux shell

FILE1.TXT

10

FILE2.TXT

05--Nov--2010--Friday 23:24:57,06--Nov--2010--Saturday  8:23:34

06--Nov--2010--Saturday  8:23:34,06--Nov--2010--Saturday  9:56:22

我想创建一个线程文件,如下所示[使用shell脚本]。

file3.txt

10,05--Nov--2010--Friday 23:24:57,06--Nov--2010--Saturday  8:23:34

10,06--Nov--2010--Saturday  8:23:34,06--Nov--2010--Saturday  9:56:22

4 个答案:

答案 0 :(得分:2)

#!/bin/bash
rm -f file3.txt
prefix=$(cat file1.txt)
for i in $(cat file2.txt)
do
    echo $prefix,$i >> file3.txt
done

答案 1 :(得分:1)

awk '{print '`cat file1.txt`' "," $0}' file2.txt > file3.txt

或者

line=`cat file1.txt`;
awk '{print '`echo $line`' "," $0}' file2.txt > file3.txt

答案 2 :(得分:1)

awk 'NR==FNR {prefix=$0; next} {print prefix "," $0}' file1.txt file2.txt > file3.txt

awk变量NR是所有输入行的当前行号,FNR是当前文件的行号:NR == FNR仅对于awk读取的第一个文件中的行为真。

答案 3 :(得分:1)

这是格伦·杰克曼的另一个答案:

awk -v pf=file1.txt 'BEGIN{getline p<pf;OFS=","} {print p,$0}' file2.txt > file3.txt

主要区别在于,如果file1.txt有多行,我将使用第一行,他将使用最后一行。