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

标签 linux bash

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

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

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

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

谢谢,

最佳答案

试试这个(如果文件不是空格分隔的,您可能需要更改 sed):

cat datafile.dat | while read line; do echo $line | sed 's/ /\n/g' | sort | gawk '{line=line " " $0} END {print line}' ; done

关于linux - 对文本文件中的每一行进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16175073/

相关文章:

ruby-on-rails - rails config mailer default url选项没有生效(开发环境)

linux - 无法在 Linux 上安装 Maven

linux - 如何在 Linux Shell 中显示出现在连续行中的日期差异?

bash - Gradle输出在VS Code的bash终端中未正确格式化

bash - 使用 Bash 在名称中间重命名多个文件的一小部分?

android - 尝试在 Xperia E C1504 上打开/dev/radio0 返回 EBUSY

linux - bash 脚本中出现 "Unexpected end of file"错误

linux - 如何找出 sk_buff 结构大小?

linux - 两个进程写入一个文件,防止混合输出

bash - 将 bash 函数转换为 fish 函数