UNIX shell:如何找到可搜索的表达式?
git status 的结尾如下所示:
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# Classes/Default.png
# Classes/[email protected]
...
由于您可能有任意数量的未跟踪文件,因此我尝试从文件末尾尾部到“未跟踪文件”并将其保存到临时文件中,删除前三行并将文件名转换为 git add Classes/...
我似乎找不到一个好的方法(除了可能是不同的语言)来跟踪可搜索的表达式。谢谢!
The end of git status looks like this:
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# Classes/Default.png
# Classes/[email protected]
...
Since you might have any number of untracked files, I'm trying to tail from the end of the file to "Untracked files" and save it to a temp file, strip out the first three lines and convert the filenames to git add Classes/...
I can't seem to find a good way (other than maybe a different language) to tail up to a searchable expression. Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
使用 sed 打印从“Untracked files”到末尾的所有内容:
然后您只需通过删除
#
字符来解析文件名。您还可以使用 git status -s 获得更短、更容易解析的输出:
这是 awk 的一个很好的应用,它可以让您同时进行 grep 和提取:
或者:
awk '{if ($1 == "??") print $2}'
当然,您也可以使用
git add
来列出(并添加)未跟踪的文件。Use
sed
to print everything from "Untracked files" to the end:Then you just have to parse the filenames by removing the
#
character.You can also use
git status -s
to get a shorter, more easily parsed output:This is a good application of
awk
, which lets you grep and extract at the same time:Alternatively:
awk '{if ($1 == "??") print $2}'
You can also, of course, use
git add
to list (and add) untracked files.使用 tail 命令:
它是如何工作的:
文件中的总行数 =
wc -l <文件.txt
“Untracked files”的行号 =
grep -n "Untracked files" file.txt|cut -d: -f1
-2
是删除顶行使用
git add
完成命令:Use the tail command:
How it works:
total number of lines in file =
wc -l < file.txt
line number of "Untracked files" =
grep -n "Untracked files" file.txt|cut -d: -f1
The
-2
is to remove the top linesComplete command with
git add
:通过管道将其传输到:
其中
$MY_REGEX
是您的模式。就您而言,可能是'^\s{7}'
。Pipe it to:
Where
$MY_REGEX
is your pattern. In your case, probably'^\s{7}'
.使用 shell 脚本的解决方案。
首先开始在 while 循环中读取文件,记录读取的行数,找到所需行时中断循环。
使用行数尾部文件,然后使用 awk 提取文件名。
这里的“filename”是你要处理的文件
Solution using shell scripting.
First start reading the file in a while loop, keep a count of the number of lines read, break the loop when the required line is found.
Using the count of lines tail the file and then extract file names using awk.
Here "filename" is the file you want to process