0

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

文件A.txt:

2

1

1

...

文件B.txt:

0023412322

1241231132

1234411177

...

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

AB

2 0023412322

1 1241231132

1 1234411177

...

其中 A 和 B 代表列名,也构成输出文件的首行

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

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

回声“A B”> fileC.txt

我=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`

完毕

我应该做哪些改变?

4

1 回答 1

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
于 2013-05-28T18:17:57.720 回答