Articles of 正则expression式

bash +如何validationstring/字是否有一些特定的字符

在我的bash脚本中,我使用grep命令来validation值是否包含“ – ”字符如下所示 echo abcdf | grep "-" abcdf 要么 echo version-1-APP-stef-10-1 | grep "-" version-1-APP-stef-10-1 并在我的bash脚本中: [[ ` echo version-1-APP-stef-10-1 | grep -c "-" ` -ne 0 ]] && echo "yes its contain" 但是这是非常丑陋的方式!!!!!!!!!!! 在bash中用于validationstring/单词是否包含特定字符的替代方法是“ – ”

AWK – search模式 – 将其添加为variables – search下一行不是variables并打印它+variables

我有一个给定的文件: application_1.pp application_2.pp #application_2_version => '1.0.0.1-r1', application_2_version => '1.0.0.2-r3', application_3.pp #application_3_version => '2.0.0.1-r4', application_3_version => '2.0.0.2-r7', application_4.pp application_5.pp #application_5_version => '3.0.0.1-r8', application_5_version => '3.0.0.2-r9', 我希望能够阅读这个文件并searchstring ".pp" 当find该string时,会将该行添加到variables中并存储它。 然后读取文件的下一行。 如果遇到以#开头的行,它会忽略它并移到下一行。 如果遇到不包含“.pp”且不以“#”开头的行,则应在新文件中将最后一个存储variables旁边的行打印出来。 输出结果如下所示: application_1.pp application_2.pp application_2_version => '1.0.0.2-r3', application_3.pp application_3_version => '2.0.0.2-r7', application_4.pp application_5.pp application_5_version => '3.0.0.2-r9', 我想用awk来实现这个。 如果有人知道如何做到这一点,这是一个简单的解决scheme,我会很高兴,如果他们可以与我分享。 如果它更复杂,知道awk中需要了解的内容(数组,variables等)会有帮助。 它甚至可以用awk实现,还是另一个必要的工具? 谢谢,

如何保留新的行和格式,而使用sedreplace文本?

我有这样的模板文件 $ cat template.txt QWERTY ~SQL~ ASDFG 我需要用下面的文本replace模板文件中的"~SQL~" 〜SQL〜 "~SQL~"string。 这个文本存储在一个variables中 SELECT COL1, COL2, COL3 FROM TABLE; 我尝试了下面的代码,但得到一个错误: sed:-eexpression式#1,字符20:未终止的's'命令 $ query='SELECT COL1, > COL2, > COL3 > FROM TABLE;' $ $ sed "s/~SQL~/$query/" template.txt sed: -e expression #1, char 20: unterminated `s' command 如果我从"query"删除新的行,那么sed命令可以正常工作 $ query='SELECT COL1, COL2, COL3 FROM TABLE;' $ sed "s/~SQL~/$query/" template.txt […]

如何将正则expression式传递给Linux中的命令查找?

当我input命令 find ./ -iname "*.pdf"或find ./ -iname \*.pdf 列出当前文件夹树下的所有pdf文件。 同样的, find ./ -iname "*.doc" 列出所有的文档文件。 我的问题是如何列出这两种types的文件? 我试过喜欢 find ./ -iname "*.{pdf,doc}" 但是这不起作用。

Linux正则expression式匹配非常大的文件没有换行符后添加新行

我有一个大到~5.1GB的文件,不幸的是它没有任何换行符。 幸运的是,在下面的正则expression式之后,很容易find我要插入换行符的地方: \{(.*?)\} 它匹配{和}中的所有内容。 我试图使用grep来find匹配上面的输出,但我得到了以下错误: grep: memory exhausted 因为它试图将全部5GB的行加载到内存中。 有没有办法处理这个没有加载到内存中,并在每次正则expression式匹配后追加一个新行? 我不是很有经验的Linux,供参考,这将在Amazon Linux EC2实例上运行。

Bash的正则expression式不接受斜杠

我是相当新的bash shell脚本(和Linux太)…我尝试做一个简单的脚本,涉及到一个由用户键盘给出的string的正则expression式。 clear read -p "Insert e-mail > " if [[ $REPLY =~ ^[.] ]] then echo "ERROR (code 1): e-mail cannot start with \".\"" elif [[ $REPLY =~ .[.]$ ]] then echo "ERROR (code 2): e-mail cannot end with \".\"" else if [[ $REPLY =~ ^[0-9][0-9a-zA-Z!#$%^\&\'*+-]+$ ]] #THIS IS WHERE I NEED HELP then […]

用sed打印每个匹配模式的第一行

我想根据一组可变的用户名过滤最后一个工具的输出。 这是最后一个未经过滤的样本输出, reboot system boot server Wed Apr 6 13:15 – 14:24 (01:09) user1 pts/0 server Wed Apr 6 13:08 – 13:15 (00:06) reboot system boot system Wed Apr 6 13:08 – 13:15 (00:06) user1 pts/0 server Wed Apr 6 13:06 – down (00:01) reboot system boot system Wed Apr 6 13:06 – 13:07 (00:01) […]

使用正则expression式查找具有确切扩展名的文件(以及以下任何内容)

我有一个约4000 * .txt和* .txt.bak文件的文件夹。 我想运行linux查找命令查找所有* .txt文件,而不是* .txt.bak文件。 什么是正确的正则expression式呢? 例如 find . -regex ".*txt" 会find所有文件,包括bak文件 find . -regex ".*txt$/" 将根本找不到任何文件

正则expression式引擎位于哪里?

我们在课堂上讲述了sed,我对sed使用正则expression式引擎的方式感到疑惑。 每个程序(sed,awk,grep等)是否使用了编程的正则expression式引擎,或者是否有一个正则expression式引擎工具/库/函数,开发人员sed,grep等只是在他们的代码中实现? 引擎内置于操作系统,然后由使用它的工具调用? 我想知道这将帮助我理解标准化正则expression式所达到的水平。 谁制造了你,正则引擎? 你的源代码在哪里?

如何做多个模式replacesed

这是我的文件example.txt {foo} {bar} {f}oo} {ba{r} {fo}o} {b{ar} 我想要这个结果: <div class="id">foo</div> <div class="id">bar</div> <div class="id">f}oo</div> <div class="id">ba{r</div> <div class="id">fo}o</div> <div class="id">b{ar</div> 我有记事本++的命令来获得如上的结果 ([}]\r\n)|(\r\n[{])|(^[{])|([}]$) (?1}</div>)(?2<div class="id">{)(?3<div class="id">{)(?4}</div>) 我试着用这个sed命令 sed -i 's@}\r\n@</div>@g' *.html 这使我的文件保持不变。 如何正确使用sed ?