Svn Unix命令,用于剥离一行的一部分

Svn Unix命令,用于剥离一行的一部分,svn,shell,unix,command-line,grep,Svn,Shell,Unix,Command Line,Grep,我正在使用命令行SVN。我来自Windows上的TortoiseSVN,每当我尝试选择一个特定的文件进行还原、区分、提交等操作时,我都会觉得非常乏味,因为路径非常长,如下所示: src/com/company/stuff/platform/appname/subpackage/subsubpackage/Foo.java src/com/com<tab>/stuff/pla<tab>/appn<tab>/subp<tab>/subsub<t

我正在使用命令行SVN。我来自Windows上的TortoiseSVN,每当我尝试选择一个特定的文件进行还原、区分、提交等操作时,我都会觉得非常乏味,因为路径非常长,如下所示:

src/com/company/stuff/platform/appname/subpackage/subsubpackage/Foo.java
src/com/com<tab>/stuff/pla<tab>/appn<tab>/subp<tab>/subsub<tab>/Foo<tab>
如果我想对该文件进行区分,我必须键入以下内容:

svn diff src/com/company/stuff/platform/appname/subpackage/subsubpackage/Foo.java
因此,我尝试通过这样做来改善这一点:

svn st | grep Foo
但它的回报是:

M       src/com/company/stuff/platform/appname/subpackage/subsubpackage/Foo.java

现在,如何剥离“M”部分,以便只获取文件路径?

如果“svn st”总是返回(不需要的)第一列,然后返回路径,请尝试以下操作:

svn st | grep Foo | sed 's/M *//'
svn st | grep Foo | awk '{print $2}'

如果“svn st”始终返回(不需要的)第一列,然后返回路径,请尝试以下操作:

svn st | grep Foo | awk '{print $2}'

为此,我将使用
awk

svn st | awk '/Foo/ { print $2 ; }'
awk
获取具有匹配指令和代码块的脚本,以便在匹配的行上执行。这将匹配其中包含
Foo
的行,并打印第二个字段。(使用默认的
FS
字段分隔符,该分隔符应按制表符和空格分隔。)

您还应该研究shell的文件名完成能力;大多数较新的shell都能够完成部分键入的文件名。举个长例子:

src/com/company/stuff/platform/appname/subpackage/subsubpackage/Foo.java
我可能会这样打:

src/com/company/stuff/platform/appname/subpackage/subsubpackage/Foo.java
src/com/com<tab>/stuff/pla<tab>/appn<tab>/subp<tab>/subsub<tab>/Foo<tab>
src/com/com/stuff/pla/appn/subp/subsubsub/Foo

根据目录中的文件,您可能需要或多或少地键入内容。

为此,我将使用
awk

svn st | awk '/Foo/ { print $2 ; }'
awk
获取具有匹配指令和代码块的脚本,以便在匹配的行上执行。这将匹配其中包含
Foo
的行,并打印第二个字段。(使用默认的
FS
字段分隔符,该分隔符应按制表符和空格分隔。)

您还应该研究shell的文件名完成能力;大多数较新的shell都能够完成部分键入的文件名。举个长例子:

src/com/company/stuff/platform/appname/subpackage/subsubpackage/Foo.java
我可能会这样打:

src/com/company/stuff/platform/appname/subpackage/subsubpackage/Foo.java
src/com/com<tab>/stuff/pla<tab>/appn<tab>/subp<tab>/subsub<tab>/Foo<tab>
src/com/com/stuff/pla/appn/subp/subsubsub/Foo

根据目录中的文件,您可能需要或多或少地键入内容。

在使用sed之后,我想到了
sed的/*/'
也适用于未受限制的文件(“?”)。@alnite一定要记住使用
^
字符告诉
sed
,它只在行的开头查找。在玩了sed之后,我想出了
sed's/*/'
也适用于未受限制的文件(“?”)。@alnite请记住使用
^
字符告诉
sed
,它只在行的开头查找。这看起来像更干净的方式。这看起来像更干净的方式。我做了选项卡,这也很乏味。类型选项卡斜杠类型选项卡斜杠-。。。您的解决方案似乎是最优雅的。没有grep,我做了标签,那也很无聊。类型选项卡斜杠类型选项卡斜杠-。。。您的解决方案似乎是最优雅的。没有grep。