Answers:
您可以使用文件重定向来重定向排序后的输出:
sort input-file > output_file
或者你也可以使用-o
,--output=FILE
排序的选项,以指示相同的输入和输出文件:
sort -o file file
注意:一个常见的错误是试图将输出重定向到相同的输入文件(例如sort file > file
)。这不起作用,因为外壳正在进行重定向(而不是sort(1)程序),并且输入文件(也作为输出)将在为sort(1)程序提供读取机会之前被擦除。
GNU sort
信息页面: -o OUTPUT-FILE'
--output = OUTPUT-FILE'将输出而不是标准输出写入OUTPUT-FILE。在较新的系统上,在任何输入文件之前-o' cannot appear after an input file if
设置POSIXLY_CORRECT',例如sort F -o F'. Portable scripts should specify
-o OUTPUT-FILE'。
sort -o file{,}
该sort
命令默认将排序操作的结果打印到标准输出。为了实现“就地”排序,您可以执行以下操作:
sort -o file file
这将file
使用排序的输出覆盖输入。-o
用于指定输出的开关是由POSIX定义的,因此应在以下所有版本上可用sort
:
-o指定要使用的输出文件的名称,而不是标准输出。该文件可以与输入文件之一相同。
如果您很不幸没有使用该版本sort
的-o
开关(路易斯向我保证它们存在),则可以通过标准方式实现“就地”编辑:
sort file > tmp && mv tmp file
sort file | sponge file
在以下Fedora软件包中:
moreutils : Additional unix utilities
Repo : fedora
Matched from:
Filename : /usr/bin/sponge
sudo apt install moreutils
这是(ab)使用的一种方法vim
:
vim -c :sort -c :wq -E -s "${filename}"
-c :sort -c :wq
文件打开后,该部分调用命令以vim。 -E
并且-s
是必需的,以便vim以不吸引终端的“无头”模式执行。
这与该sort -o "${filename}" "${filename}"
方法几乎没有任何好处,除了它只使用一次filename参数。
这对我formatter
在文件nanorc
条目中实现指令很有用.gitignore
。这是我为此使用的:
syntax "gitignore" "\.gitignore$"
formatter vim -c :sort -c :wq -E -s
nanorc
吗?噢,讽刺。
file
同一文件的排序内容替换未排序的内容?当前陈述问题的方式,什么也不做是正确的答案(您不希望有任何输出,因此什么也不做)。