我使用cat
命令将多个数据文件附加到单个数据文件中。如何将该单个文件值分配到新文件中?
我正在使用命令:
cat file1 file2 file3 > Newfile.txt
AnotherFile=`cat Newfile.txt`
sort $AnotherFile | uniq -c
显示错误,无法打开AnotherFile 如何将此新文件值分配到另一个文件中?
答案 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
没有排序通过连接原始文件而创建的列表中提到的文件的所有内容(即,假设file1
,file2
和{{1不包含文件名列表),目标是对源文件中找到的行进行排序和计数。
整个工作可以在一个命令行中完成:
file3
或(更常见):
cat file1 file2 file3 | tee Newfile.txt | sort | uniq -c
以频率递增的顺序列出行。
如果您确实想要对cat file1 file2 file3 | tee Newfile.txt | sort | uniq -c | sort -n
,file1
,file2
中列出的文件内容进行排序,但只列出每个文件的内容一次,那么:
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