将多个文件附加到一个文件中

时间:2013-04-18 06:50:32

标签: unix

我使用cat命令将多个数据文件附加到单个数据文件中。如何将该单个文件值分配到新文件中?

我正在使用命令:

cat file1 file2 file3 > Newfile.txt
AnotherFile=`cat Newfile.txt`
sort $AnotherFile | uniq -c

显示错误,无法打开AnotherFile 如何将此新文件值分配到另一个文件中?

3 个答案:

答案 0 :(得分:2)

原始问题的原始答案

嗯,最简单的方法可能是cp

cat file1 file2 file3 > Newfile.txt
cp Newfile.txt AnotherFile.txt

如果失败,你可以使用:

cat file1 file2 file3 > Newfile.txt
AnotherFile=$(cat Newfile.txt)
echo "$AnotherFile" > AnotherFile.txt

修订后的问题的答案

最初的问题是echo "$AnotherFile"作为第三行;修订后的问题以sort $AnotherFile | uniq -c为第三行。

假设sort $AnotherFile没有排序通过连接原始文件而创建的列表中提到的文件的所有内容(即,假设file1file2和{{1不包含文件名列表),目标是对源文件中找到的行进行排序和计数。

整个工作可以在一个命令行中完成:

file3

或(更常见):

cat file1 file2 file3 | tee Newfile.txt | sort | uniq -c

以频率递增的顺序列出行。

如果您确实想要对cat file1 file2 file3 | tee Newfile.txt | sort | uniq -c | sort -n file1file2中列出的文件内容进行排序,但只列出每个文件的内容一次,那么:

file3

连续三个与排序相关的命令看起来很奇怪,但每个步骤都有理由。 cat file1 file2 file3 | tee Newfile.txt | sort -u | xargs sort | sort | uniq -c 确保每个文件名列出一次。 sort -u将标准输入上的文件名列表转换为xargs sort命令行上的文件名列表。其输出是sort生成的每批文件的排序数据。如果xargs不需要多次运行xargs的文件太少,那么以下普通sort就是多余的。但是,如果sort必须多次运行xargs,那么最后的排序必须处理sort生成的第二批中的第一行可能在最后一行之前的事实由xargs sort生成的第一批产生的行。

这将成为基于原始文件中数据知识的判断调用。如果文件足够小,xargs sort不需要运行多个xargs命令,则省略最终sort。启发式将是“如果源文件的大小总和小于最大命令行参数列表,则不包括额外的排序”。

答案 1 :(得分:0)

你可以一次性做到这一点:

# Write to two files at once. Both files have a constantly varying
# content until cat is finished.
cat file1 file2 file3 | tee Newfile.txt> Anotherfile.txt

# Save the output filename, just in case you need it later
filename="Anotherfile.txt"

# This reads the contents of Newfile into a variable called AnotherText
AnotherText=`cat Newfile.txt`

# This is the same as "cat Newfile.txt"
echo "$AnotherText" 

# This saves AnotherText into Anotherfile.txt

echo "$AnotherText" > Anotherfile.txt

# This too, using cp and the saved name above
cp Newfile.txt "$filename"

如果你想一次性创建第二个文件,这是一个常见的模式:

# During this process the contents of tmpfile.tmp is constantly changing
{ slow process creating text } > tmpfile.tmp

# Very quickly create a complete Anotherfile.txt
mv tmpfile.tmp Anotherfile.txt

答案 2 :(得分:0)

制作文件并在附加模式下重定向。

touch Newfile.txt
cat files* >> Newfile.txt