Lyn*_*nob 7 command-line scripts text-processing
我正在看这个问题 ,我想知道是否可以从终端完成以下操作。我是在 python 中完成的,只是想看看它是否可以从终端、bash 脚本或其他任何方式完成。
假设我有一个看起来像这样的文件:
2,4,5,14,9
40,3,5,10,1
Run Code Online (Sandbox Code Playgroud)
可以这样排序吗,按行(行)
2,4,5,9,14
1,3,5,10,40
Run Code Online (Sandbox Code Playgroud)
还是太复杂了?我是用 python 做的,我只是想知道下次我可能不使用 python 时是否可以这样做。我所做的是创建列表并对其进行排序。
这应该与您正在寻找的有关。它将读取一个文件 (test.txt) 并创建一个输出文件 (sorted.txt),其中的排序行与它们在原始文件中出现的顺序相同。
while read line; do j=$(echo "$line" | sed -e 's/,/\n/g' | sort -n); echo "$j"
| sed -e 's/ /,/g' >> sorted.txt; done < test.txt
Run Code Online (Sandbox Code Playgroud)
这是另一种 Perl 方法:
perl -F, -lane 'print join ",",sort {$a<=>$b} @F' file.txt
Run Code Online (Sandbox Code Playgroud)
另一个 shell/coreutils 一个(尽管就我个人而言,我更喜欢 steeldriver使用相同想法的优秀答案):
while read line; do
tr , $'\n' < <(printf -- "%s" "$line") | sort -g | tr $'\n' , | sed 's/,$/\n/';
done < file.txt
Run Code Online (Sandbox Code Playgroud)