Questions tagged «regular-expression»

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


4
使用grep匹配具有固定数量字符的字符串
我正在尝试使用查找所有6字母词grep。我目前有这个: grep "^.\{6\}$" myfile.txt 但是,我发现我也得到了如下结果:étuis,étude。 我怀疑这与e以上文字中的符号有关。 我有什么办法可以确保不会发生这种情况? 谢谢你的帮助!

7
替换除最后x次出现以外的字符
我有一个文件,其中有一堆与IP相关的主机名看起来像这样: x-cluster-front-1 192.168.1.2 x-cluster-front-2 192.158.1.10 y-cluster-back-1 10.1.11.99 y-cluster-back-2 10.1.157.38 int.test.example.com 59.2.86.3 super.awesome.machine 123.234.15.6 我希望它看起来像这样: x-cluster-front-1 192.168.1.2 x-cluster-front-2 192.158.1.10 y-cluster-back-1 10.1.11.99 y-cluster-back-2 10.1.157.38 int-test-example-com 59.2.86.3 super-awesome-machine 123.234.15.6 我该如何更换。为了方便第二列进行排序,在第一列中使用-(连字符)来表示(点)?我当时想用sed替换点直到第一个空格,或者替换除最后三个点以外的所有点,但是我在理解正则表达式和sed时遇到了麻烦。我可以执行简单的替换,但是这很麻烦! 这是我一直用bash编写的较大脚本的一部分。我被困在这一部分。

1
grep不超过一定长度的单词
我正在寻找一种方法来grep这样的事情:i log for E M, i 1 f x i 0, I xi 1, 3 1,.仅基于字符数。 假设输出中的任何内容都不得超过三个字符。这个假设的单线看起来像是grep -v [:alnum:] > {3}。(除了我只是不知道如何用grep语法编写。)

1
利用bash脚本参数可能吗?
我想将电子邮件地址从Web表单传递到bash脚本。我正在使用以下正则表达式: /[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}/ 这够了吗?还是可以嵌入漏洞利用程序? 该脚本是从PHP调用的: system('/usr/local/bin/script.sh "$email"');

1
使用grep的无效反向引用
因此,我试图找到6个字母的单词,这些单词由一个字符重复3次,然后再由另一个字符重复3次组成。例如aaabbb或oookkk。 我在尝试: grep -E "[a-z]\1{3}\S[a-z]\1{3}" filename 首先,正则表达式正确吗?第二,我为什么要得到grep: Invalid back reference?

2
在“ sed”内执行命令
我有一个保存在文本文件中的随机内存地址列表,我需要将sed它们删除,解码并将它们保存回我的文件中。但是,我尝试执行的解码操作是在一段时间前创建的C ++程序中处理的。我现在遇到的问题是在sed命令中执行C ++ 。也就是说,我想向后引用需要解码的部分,并将其用作我的C ++程序中的参数。我写了以下命令: cat $1 | sed -r 's/(0[Xx])([0-9A-Za-z]{1,8})/\1`./convAddrs \2`/g'; 在我有机会阅读这篇文章的答案之前,我说这sed不执行命令。是真的sed不允许执行命令吗?如果是这样,假设我编写的命令是一个有效的sed序列,我将如何编写它perl?

3
使用sed提取字符串的一部分
ls lib/oracle-11.2.0.3.0.txt | sed 's/lib.\([oracle.*]\)\.txt/\1/' 它提供整个字符串,而不仅仅是oracle部分,直到.txt我在做什么错了? 我可以使用awk如下进行操作,但是不知道为什么sed没有给出想要的结果。 echo "lib/oracle-11.2.0.3.0.txt" | awk -F/ '{print substr($2,1,index($0,".txt")-1);}'

2
sed:替换数字
我正在尝试为我安装/升级Ubuntu时编写一些安装脚本。我在解决问题logrotate.d: /var/log/ufw.log { rotate 7 weekly missingok notifempty compress delaycompress sharedscripts postrotate reload rsyslog >/dev/null 2>&1 || true endscript } 我想更改rotate nnn为rotate 99。必须使nnn为任意位数(通常为1或2),但不影响该postrotate行。 我已经尝试了这两个,但是我都不需要(并且我用nnn是1,2或3位数字进行了测试)。 sudo sed 's/rotate[0-9]*/rotate 99/' /etc/logrotate.d/ufw sudo sed 's/^rotate[0-9]/rotate 99/' /etc/logrotate.d/ufw

3
如何用另一个文件中的一部分文本替换文件中两个标记之间的文本?
假设我在中有一段文字~/.bashrc: #~/.bashrc # ...some commands... # aliases alias suicide='sudo rm -rf /' # end aliases # other commands 我希望将该文本块替换为另一个文件中两个标记之间包含的一些其他文本: stuff-to-place-in-bashrc.txt # stuff-to-place-in-bashrc.txt # ...stuff... # aliases alias ldir='ls * -d' alias ithinklifeisworthliving='echo all good' # end aliases # ...more stuff... 我试过了 sed -ne 's/# aliases\s+\(.*\)\s+# end aliases/\1/' stuff-to-place-in-bashrc.txt 但是我真的在黑暗中摇摆。有人可以帮我吗? 如何从中提取文本stuff-to-place-in-bashrc.txt? …

4
如何将字符串的一部分提取到变量中?
我有一些这样的文件中的一行: attempting to create a 512^3 level (with Dirichlet BC) using a 16^3 grid of 32^3 boxes and 800 tasks... 我想提取的512^3,16^3,32^3并800从它的四个数字分别为它们分配到四个变量level,grid,boxes和tasks用于其他用途。 我怎样才能做到这一点?

3
打印不包含标点符号的所有行
我想要一个可以打印不包含标点符号的所有行的正则表达式模式: 输入: .This is line 1 This is ! line 2 This is line (3) This is line 4 输出:(应为) This is line 4 到目前为止我尝试过的是: grep '[^[:punct:]]' file.txt 但是它会显示所有不是标点符号的字符。


4
正则表达式匹配“ locate”
我正在尝试使用locate命令在主文件夹中查找文件,但是,每当尝试运行此文件时,都不会得到任何结果: locate -i -l 4 --regexp '^\/home\/jack\/[A-Za-z0-9\/\ ]*(My.)*$' 我也尝试过,^\/home\/jack\/^(?!\.)[A-Za-z0-9\/\ ]*(My.)*$但是也不会返回任何结果。 我要测试的文件是 /home/jack/Music/Foals/My Number.flac 我想从搜索中排除隐藏文件的结果。

5
第n次匹配后打印行
我希望在以下文件中显示第4598行。实际上,我想在第n次匹配后显示该行。在这种情况下,第三次出现的行<Car>。我该怎么办? <Car> 10456 </Car> <Car> 70192 </Car> <Car> 4598 </Car>

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.