对文本文件中的每一行进行排序

ban*_*nuj 5 linux bash

我有一个文本文件,其中每一行都包含一些单词,例如:

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)

它工作正常,但我不高兴我必须创建一个重复的文件,特别是因为文件很大。

所以,我的问题是有什么解决方案可以对文件的每一行进行排序?

谢谢,

Era*_*tan 5

试试这个(如果文件不是空格分隔的,您可能需要更改 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)