我正在尝试将两个文件合并为一个具有特定格式的文件,这些文件包含以下内容:
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`
完成
我应该做些什么改变?
答案 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