'git stripspace' 是如何工作的(文档无用)

How does 'git stripspace' actually work (documentation useless)

我正在尝试 运行 git stripspacedocumentation 出奇地毫无价值。

出现 git stripspacesstdin 作为其输入并写入 stdout 但是:

% git stripspace < myfile.txt > myfile.txt

删除了myfile.txt

中的所有文字

我希望文档提供一个调用示例。有人有吗?

您正在重定向到同一个文件。

这就是问题所在。

尝试更改您的简单命令,即:

git stripspace < myfile.txt > myfile.txt

对此:

git stripspace < myfile.txt > my-other-file.txt

它应该工作得很好。

sponge 正是解决这个问题的工具。它首先 "soaks up" 所有通过管道传输到其中的数据,然后将其写出到指定的文件。它是 moreutils 软件包的一部分 - 在 Ubuntu 上使用 sudo apt install moreutils

安装它

这是一个使用文件 spacetest.txt 的示例 - awk 命令用于帮助可视化文件中存在的尾随空格:

# print the file spacetest.txt with '%' appended to each line-end to show trailing spaces

~/temp/stripspace-test$ awk '{ print [=10=] "%" }' spacetest.txt 
%
%
line 1 has a space at the end %
line 2 has 2 spaces at the end  %
line 3 has 3 spaces at the end   %
%
the next line has 4 spaces%
    %
three blank lines follow this one%
%
%
%

# 'redirect' from and to spacetest.txt using `sponge` as a go-between

~/temp/stripspace-test$ git stripspace < spacetest.txt | sponge  spacetest.txt


# print the file spacetest.txt again to demonstrate everything is as expected

~/temp/stripspace-test$ awk '{ print [=10=] "%" }' spacetest.txt 
line 1 has a space at the end%
line 2 has 2 spaces at the end%
line 3 has 3 spaces at the end%
%
the next line has 4 spaces%
%
three blank lines follow this one%