Questions tagged «regular-expression»

正则表达式是匹配字符串中字符模式的一种方式。

7
如何减少AWK中正则表达式的贪婪性?
我想在中进行非贪心模式(正则表达式)匹配awk。这是一个例子: echo "@article{gjn, Author = {Grzegorz J. Nalepa}, " | awk '{ sub(/@.*,/,""); print }' 是否可以编写选择较短字符串的正则表达式? @article{gjn, 而不是这个长字符串?: @article{gjn, Author = {Grzegorz J. Nalepa}, 我想得到这个结果: Author = {Grzegorz J. Nalepa}, 我有另一个例子: echo“ ,文章{gjn,作者= {Grzegorz J. Nalepa},” | awk'{sub(/ , [^,] *,/,“”); 打印}' ↑↑^^^^^^ 请注意,我在输入字符串和正则表达式的第一个位置将@字符更改为逗号(,)字符(并且也更改.*为[^,]*)。是否可以编写选择较短字符串的正则表达式? , Author = {Grzegorz J. Nalepa}, …


2
什么是grep -v的python等价物?
我喜欢grep -v。我用它所有的时间。但是我也正在用python做一些文本处理,而我缺少一件事。 通常,我通常grep -v将多余的内容从文本中删除。 例如, $ grep -v '[a-z]' # (I manually review this output to confirm that I don't want those lines) $ grep '[a-z]' > linesiwanted 但是如何匹配Python中的正则表达式的补码?例如,\w?的补码。

2
使用正则表达式量词查找命令,例如{1,2}
我一直试图创建一个find命令字符串,该字符串将查找所有以数字1-99结尾但排除所有其他文件的文件。 例如,我想找到myfile1 myfile99而不是myfile456而不是myfilebackup 我在想的正则表达式是,myfile[1-9]{1,2}但是我无法将它与find一起使用。 find . -regex '.*myfile[0-9]{1,2}' 要么 find . -iname 'myfile[0-9]{1,2}' 从我可以看到的那{1,2}部分是不起作用的。 (顺便问一下,您可以-name -regex互换使用吗?) 任何帮助表示赞赏。

2
哪里有更少的搜索模式参考?
在哪里可以找到less正则表达式搜索模式的参考? 我想less使用\d查找数字来搜索文件,但似乎不了解此通配符。我试图找到less正则表达式模式的参考,但是找不到任何内容,不在手册页上,也没有在Internet上。


1
为什么此BSD grep结果与GNU grep不同?
我的计算机正在运行macOS 10.12.3,并且我使用的系统安装grep实用程序的版本为2.5.1-FreeBSD。 这些是我在测试各种正则表达式时得到的输出: 但是,如果我使用GNU grep(2.25版)运行这些程序,则会得到以下信息: GNU的grep在我看来是正确的,而BSD的grep是不正确的,不是吗?他们为什么不同?我不明白为什么当正则表达式指定它必须跟随行的开头时,BSD的grep为何匹配“ a”。

3
如何在sed或awk流中添加页眉和/或页脚?
我有一堆输出通过sed和awk。 如何在输出前加上START前缀并在END后加上答案? 例如,如果我有 All this code on all these lines and all these 我如何获得: START All this code on all these lines and all these END ? 我的尝试是: awk '{print "START";print;print "END"}' 但是我得到了 ... START All this code END START on all these lines END START and all these END

3
为什么[az]星号匹配数字?
我在当前路径下有3个目录。 $ls a_0db_data a_clean_0db_data a_clean_data $ls a_*_data a_0db_data: a_clean_0db_data: a_clean_data: $ls a_[a-z]*_data a_clean_0db_data: a_clean_data: 我希望最后一个ls命令只能匹配a_clean_data。为什么它也与包含的匹配0? bash --version GNU bash, version 4.2.24(1)-release (i686-pc-linux-gnu)


2
对单词边界感到困惑
我已经对此进行了很多研究,但仍不清楚。这是什么字边界是什么意思?它有什么作用? 因此,例如,有人可以向我解释此命令吗? egrep '\b[A-Z]+\b' filename.sh

3
在线grep练习?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Unix&Linux Stack Exchange 的主题。 9个月前关闭。 有没有在线grep教程,其中包含一些用于执行练习的在线工具?例如,拥有一些预定义的文本样本并被告知要查找什么模式等等?对于在可预测的环境中进行grep的实际学习而言,这将是一个非常有用的工具。

5
如何使用find命令从文件名中删除(1)
我最近在Mac OS 10.7(Lion)上使用XLD将所有FLAC文件转换为44.1 kHz的较低采样率和24位的位深(因为iPhone / iPod不支持高于此的任何东西)。 尽管我告诉XLD改写了以前的所有文件,但XLD (1)在文件末尾附加了一个 some_song.m4a 至 some_song(1).m4a 所以现在我(1)要从我转换的所有FLAC文件中删除该文件。 我知道我可能已经使用某些程序甚至AppleScript重命名了文件,但是我想学习使用老式的命令行方法。 我知道这find . -name *\(1\).m4a将获取所有已转换的FLAC文件。 接下来,我知道我必须做的东西-exec和mv重命名所有找到的文件。但是我不知道是如何保留原始文件名而仅删除(1)。 也许我需要进行一些组正则表达式捕获来存储我不想修改的文件名的一部分?或者也许不可能一齐完成所有操作,而我应该创建一个shell脚本(我做起来不太舒服,但是我愿意尝试一下)。 欢迎任何提示或建议!谢谢!


4
如何在AWK中使用正则表达式进行字符串替换?
假设文件中有一些文本: (bookmarks ("Chapter 1 Introduction 1" "#1" ("1.1 Problem Statement and Basic Definitions 23" "#2") ("Exercises 31" "#30") ("Notes and References 42" "#34")) ) 我想给每个数字加11,"如果有的话,则在每行中加一个,即 (bookmarks ("Chapter 1 Introduction 12" "#12" ("1.1 Problem Statement and Basic Definitions 34" "#13") ("Exercises 42" "#41") ("Notes and References 53" "#45")) ) 这是我使用GNU AWK和regex的解决方案: …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.