如何使用shell脚本将两个文本文件合并为一个具有特定格式的文件?

时间:2013-05-28 17:35:50

标签: shell text-files solaris

我正在尝试将两个文件合并为一个具有特定格式的文件,这些文件包含以下内容:

fileA.txt:

2

1

1

...

fileB.txt:

0023412322

1241231132

1234411177

...

所以输出应该是: fileC.txt:

A B

2 0023412322

1 1241231132

1 1234411177

...

其中A和B表示列的名称,并且还形成输出文件的初始行

该脚本应该在Solaris上运行,但我也遇到了awk指令的问题,我不允许在系统上更改或安装任何内容。现在我有一个使用循环的解决方案,但效率不高,因为脚本对于大文件需要太长时间。除了使用awk指令和循环,还有什么建议吗?

我永远不能使用awk指令,所以我没有awk指令,只有循环:

回声“A B”> fileC.txt

I = echo 1

表示cat fileA.txt

中的行
do

    VAR=`sed -n "$i"',1p' fileB.txt`

    echo "$line $VAR" >> fileC.txt

    echo "$VAR" >> file"$line".txt #Another neccesary command for the script 

    i=`expr $i + 1`

完成

我应该做些什么改变?

1 个答案:

答案 0 :(得分:2)

paste是一个非常方便的程序,几乎完全符合您的要求,而不是打印出文件名或写入文件。我写了这个简单的shell脚本来添加文件名:

echo -e "$1\t$2" # print the filenames separated by a tab
paste $1 $2

您可以使用chmod使其可执行,然后运行./myscript file1 file2(假设您将脚本命名为myscript)来运行此操作。如果要写入第三个文件,可以执行./myscript file1 file2 > file3

请注意,写入后,每个文件的内容都以制表符分隔。如果您希望它们以空格分隔,则可以改为使用此脚本:

echo "$1 $2"
paste -d" " $1 $2