我有一个文本文件,其中每一行都包含一些单词,例如:
stackoverflow coding programming
tag question badges
Run Code Online (Sandbox Code Playgroud)
我必须对每一行进行排序并保留行的顺序。例如,对于上面的例子,输出应该是:
coding programming stackoverflow
badges question tag
Run Code Online (Sandbox Code Playgroud)
到目前为止,我的解决方案是创建一个临时文件,其中所有行都已排序。bash 脚本如下所示:
FILE_TMP=$FILE".tmp"
while read line
do
echo $line | xargs -n1 | sort | xargs >>$FILE_TMP
done < $FILE
mv $FILE_TMP $FILE
Run Code Online (Sandbox Code Playgroud)
它工作正常,但我不高兴我必须创建一个重复的文件,特别是因为文件很大。
所以,我的问题是有什么解决方案可以对文件的每一行进行排序?
谢谢,
试试这个(如果文件不是空格分隔的,您可能需要更改 sed):
cat datafile.dat | while read line; do echo $line | sed 's/ /\n/g' | sort | gawk '{line=line " " $0} END {print line}' ; done
Run Code Online (Sandbox Code Playgroud)