我有一个包含每行一些词的文本文件,例如:排序文本每行文件
stackoverflow coding programming
tag question badges
我必须排序各条线和保护线的顺序。例如,对于上面的例子中,输出应为:
coding programming stackoverflow
badges question tag
我的解决方案到现在为止是创建一个临时文件,其中所有行进行排序。 的bash脚本是这样的:
FILE_TMP=$FILE".tmp"
while read line
do
echo $line | xargs -n1 | sort | xargs >>$FILE_TMP
done < $FILE
mv $FILE_TMP $FILE
它工作正常,但我并不高兴,我必须创建一个重复的文件,特别是因为文件是大。
所以,我的问题是有没有解决方案来排序文件的每一行?
谢谢
这样做的一种非常不友好的方式是不创建临时文件,而是将输出发送到标准输出。然后你的小脚本的行为就像“排序”和其他公用事业,每个人都很开心。 (如果需要进行其他处理并通过管道发送输出,则不需要创建临时文件...) – fog 2013-04-23 17:06:04
难道你不能创建一个临时的'字符串'(字符数组)来获取行的内容(以行尾字符结尾),然后对它们进行排序,然后用新排序的行替换当前行?这种方法的成功取决于你是否可以从文件中删除特定的行?示例说你在线#1: - 将它读入一个字符串>>对它进行排序>>从文件中删除行#1 >>将新行#1添加到文件>>移动到下一行并重复。如果这是可能的,那么你可以避免创建一个新的临时文件,如果没有,那么你可能不得不求助于新的临时文件。 – Philo 2013-04-23 17:07:31