我想找到按顺序有"abc"和"efg"的文件,这两个字符串在该文件的不同行上.例如:包含内容的文件:
blah blah..
blah blah..
blah abc blah
blah blah..
blah blah..
blah blah..
blah efg blah blah
blah blah..
blah blah..
Run Code Online (Sandbox Code Playgroud)
应该匹配.
如何转储数据,只转储数据库的某些SQLite3表(不是所有表)的数据,而不是模式?转储应该是SQL格式的,因为它应该稍后可以很容易地重新输入到数据库中,并且应该从命令行完成.就像是
sqlite3 db .dump
Run Code Online (Sandbox Code Playgroud)
但是没有转储模式并选择要转储的表.
我需要找到包含特定字符串模式的所有文件.想到的第一个解决方案是使用带有xargs grep的find管道:
find . -iname '*.py' | xargs grep -e 'YOUR_PATTERN'
Run Code Online (Sandbox Code Playgroud)
但是如果我需要找到跨越多行的模式,我就会被卡住,因为vanilla grep找不到多行模式.
我试图输出一个字符串,其中包含字符串的两个单词之间的所有内容:
输入:
"Here is a String"
Run Code Online (Sandbox Code Playgroud)
输出:
"is a"
Run Code Online (Sandbox Code Playgroud)
使用:
sed -n '/Here/,/String/p'
Run Code Online (Sandbox Code Playgroud)
包括端点,但我不想包含它们.
我需要一个匹配java方法声明的正则表达式.我提出了一个与方法声明相匹配的方法,但它要求方法的左括号与声明在同一行.如果您有任何改进我的正则表达式的建议或只是有一个更好的建议,请提交答案.
这是我的正则表达式: "\w+ +\w+ *\(.*\) *\{"
对于那些不知道java方法是什么样的人,我将提供一个基本的方法:
int foo()
{
}
Run Code Online (Sandbox Code Playgroud)
Java方法有几个可选部分也可以添加,但这些部分是保证方法的唯一部分.
更新:我目前的正则表达式是"\w+ +\w+ *\([^\)]*\) *\{"为了防止Mike和adkom描述的情况.
我正在为一个项目编写文档,我想确保我没有错过任何方法.代码是用Python编写的,我使用PyCharm作为IDE.
基本上,我需要一个REGEX来匹配以下内容:
def method_name(with, parameters):
someVar = something()
...
Run Code Online (Sandbox Code Playgroud)
但它不应该匹配:
def method_name(with, parameters):
""" The doc string """
...
Run Code Online (Sandbox Code Playgroud)
我尝试使用带有REGEX功能的PyCharm搜索模式,):\s*[^"']因此它会匹配任何行,之后:不会以空格开头"或'之后,但它不起作用.知道为什么吗?
我有一个这样的电子邮件日志文件:
2013-09-11 12:02:08 INFO: ------------------------------
2013-09-11 12:02:08 INFO: Javamail session sending email
2013-09-11 12:02:08 INFO: Session properties:
2013-09-11 12:02:08 INFO: com.hof.email.starttime=20130911120208
2013-09-11 12:02:08 INFO: mail.smtp.auth=true
2013-09-11 12:02:08 INFO: mail.smtp.connectiontimeout=60000
2013-09-11 12:02:08 INFO: mail.smtp.host=mailserver
2013-09-11 12:02:08 INFO: mail.smtp.port=25
2013-09-11 12:02:08 INFO: mail.smtp.timeout=60000
2013-09-11 12:02:08 INFO: mail.transport.protocol=smtp
2013-09-11 12:02:08 INFO: From: Support
2013-09-11 12:02:08 INFO: To: Customer
2013-09-11 12:02:08 INFO: Subject: Your Report Data
2013-09-11 12:02:08 INFO: Message ID: <id>
2013-09-11 12:02:09 INFO: Email sent successfully
2013-09-11 12:02:09 INFO: Javamail session ended …Run Code Online (Sandbox Code Playgroud) 例:
...
Line
some text
other text
10
...
Run Code Online (Sandbox Code Playgroud)
是否有可能告诉GREP,^Line.*?^10$以便点匹配换行符,我得到这个输出:
Line
some text
other text
10
Run Code Online (Sandbox Code Playgroud)
如果没有,是否有一些Linux CLI工具可以做到这一点?
我在ascii中有一个很长的文本文件.它经常会有Page: #####一条线.我希望从"Page:25141"开始,然后在文档末尾的每一行匹配.
我尝试过的一些组合是:
grep -E ^["Page: 25141".*] document.txt
grep "Page: 25141.*" document.txt
grep "Page: 25141\.\*" document.txt
grep -E "Page: 25141"[.*] document.txt
grep -E "Page: 25141"{.*} document.txt
grep -E {"Page: 25141".*} document.txt
Run Code Online (Sandbox Code Playgroud)
无法让这个工作.
例如,假设我有以下数据
ABC,3,4
,,ExtraInfo
,,MoreInfo
XYZ,6,7
,,XyzInfo
,,MoreXyz
ABC,1,2
,,ABCInfo
,,MoreABC
Run Code Online (Sandbox Code Playgroud)
获取grep以提取ABC线是微不足道的.但是,如果我还想抓住以下行来产生此输出
ABC,3,4
,,ExtraInfo
,,MoreInfo
ABC,1,2
,,ABCInfo
,,MoreABC
Run Code Online (Sandbox Code Playgroud)
可以使用grep和标准shell脚本来完成吗?
编辑:只是为了澄清它们之间可能存在可变数量的行.逻辑是在CSV的第一列为空时继续打印.