Syl*_*gat 365
您可以使用文件重定向来重定向已排序的输出:
sort input-file > output_file
Run Code Online (Sandbox Code Playgroud)
或者你也可以使用-o
,--output=FILE
排序的选项,以指示相同的输入和输出文件:
sort -o file file
Run Code Online (Sandbox Code Playgroud)
注意:常见的错误是尝试将输出重定向到相同的输入文件(例如sort file > file
).这不起作用,因为shell正在进行重定向(而不是sort(1)程序),输入文件(也作为输出)将在给sort(1)程序读取它的机会之前被删除.
Tom*_*ech 56
该sort
命令默认将排序操作的结果打印到标准输出.为了实现"就地"排序,您可以这样做:
sort -o file file
Run Code Online (Sandbox Code Playgroud)
这将file
使用已排序的输出覆盖输入.-o
用于指定输出的开关由POSIX定义,因此应该可用于以下所有版本sort
:
-o指定要使用的输出文件的名称,而不是标准输出.此文件可以与其中一个输入文件相同.
如果你不幸有一个sort
没有-o
开关的版本(Luis向我保证它们存在),你可以用标准方式实现"就地"编辑:
sort file > tmp && mv tmp file
Run Code Online (Sandbox Code Playgroud)
Sil*_*Fox 12
sort file | sponge file
Run Code Online (Sandbox Code Playgroud)
这是在以下 Fedora 包中:
moreutils : Additional unix utilities
Repo : fedora
Matched from:
Filename : /usr/bin/sponge
Run Code Online (Sandbox Code Playgroud)
小智 7
您想对文件夹和子文件夹中的所有文件进行排序并覆盖它们吗?
用这个:
find . -type f -exec sort {} -o {} \;
Run Code Online (Sandbox Code Playgroud)
这是(ab)使用的一种方法vim
:
vim -c :sort -c :wq -E -s "${filename}"
Run Code Online (Sandbox Code Playgroud)
该-c :sort -c :wq
部分在文件打开后调用 vim 命令。 -E
并且-s
是必要的,以便 vim 在不绘制到终端的“无头”模式下执行。
与该sort -o "${filename}" "${filename}"
方法相比,这几乎没有任何好处,只是它只接受一次文件名参数。
这对我formatter
在文件nanorc
条目中实现指令很有用.gitignore
。这是我用来做的:
syntax "gitignore" "\.gitignore$"
formatter vim -c :sort -c :wq -E -s
Run Code Online (Sandbox Code Playgroud)