试图连续重复的字母出现两次或三次.无法使用ERE找到使用量词和捕获组的方法
$ grep --version | head -n1
grep (GNU grep) 2.25
$ # consecutive repeated letters occurring twice
$ grep -m5 -xiE '[a-z]*([a-z])\1[a-z]*[a-z]*([a-z])\2[a-z]*' /usr/share/dict/words
Abbott
Annabelle
Annette
Appaloosa
Appleseed
$ # no output for this, why?
$ grep -m5 -xiE '([a-z]*([a-z])\2[a-z]*){2}' /usr/share/dict/words
Run Code Online (Sandbox Code Playgroud)
与工作-P虽然
$ grep -m5 -xiP '([a-z]*([a-z])\2[a-z]*){2}' /usr/share/dict/words
Abbott
Annabelle
Annette
Appaloosa
Appleseed
$ grep -m5 -xiP '([a-z]*([a-z])\2[a-z]*){3}' /usr/share/dict/words
Chattahoochee
McConnell
Mississippi
Mississippian
Mississippians
Run Code Online (Sandbox Code Playgroud)
感谢Casimir et Hippolyte提出更简单的输入和正则表达式来测试这种行为
$ echo 'aazbb' | grep -E '(([a-z])\2[a-z]*){2}' || …Run Code Online (Sandbox Code Playgroud) 我虽然这将是一项简单的任务,但我遇到了一些麻烦。
输入样本
$ cat file.txt
Brown Potatoes with Cheese
Yellow Potatoes with Sugar and Cheese
Run Code Online (Sandbox Code Playgroud)
我想用来sed删除字符串后的所有内容
所以输出是
Brown Potatoes
Yellow Potatoes
Run Code Online (Sandbox Code Playgroud)
我已经尝试过这个正则表达式,但它似乎不起作用。
sed -i -e "s/with.*//g" file.txt
Run Code Online (Sandbox Code Playgroud)
我哪里做错了?
在Linux上我使用它来获取行后面的下两[test]行:
sed -n '/\[test\]/{n;p;n;p}' my-file
Run Code Online (Sandbox Code Playgroud)
在Mac上我得到:
sed: 1: "/\\[test\\]/{n;p;n;p}": extra characters at the end of p command.
Run Code Online (Sandbox Code Playgroud)
是否有适用于两个平台或Mac的表达式,必须使用完全不同的命令?
我在使用 sed 替换 sql 文件中的字符串时遇到一些问题。到目前为止我有:
sed -i 's#http://mydomainurl.co.uk#http://pinkiepie#g' /home/user/dbs/my_database.sql
Run Code Online (Sandbox Code Playgroud)
每当我运行此命令时,它都会删除http://mydomainurl.co.uk但将其替换为http://pinkiepie.co.ukThe local machine at home is called pinkiepie,因此不需要 TLD.co.uk后缀,因此应将其替换为http://pinkiepie
知道我哪里出错了吗?
我如何匹配这样的东西:
haha\nhphp\nhdhd\nlolo\n
Run Code Online (Sandbox Code Playgroud)
我想提取换行符之间haha并lolo包括换行符,我使用下面的正则表达式但失败了:
/haha(.*?)lolo/s
Run Code Online (Sandbox Code Playgroud)
我期望提取的内容:
\nhphp\nhdhd\n
Run Code Online (Sandbox Code Playgroud)
我尝试使用其他修饰符,例如//n, //m,但它不起作用。
我想删除文件中的所有*.ts.os.remove没用.
这并没有扩大 *
>>> args = ['rm', '*.ts']
>>> p = subprocess.call(args)
rm: *.ts No such file or directory
Run Code Online (Sandbox Code Playgroud) 我将使用以下命令在包含许多文件的目录中 grep 文本。
grep -irl "SampleText" *.txt
Run Code Online (Sandbox Code Playgroud)
我的情况是只在.txt文件中使用grep 。在 Windows 的命令提示符中执行上述命令时,它会引发类似错误
grep: *.txt: Invalid argument
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
我有一个像这样的行列表:
Spend: 4,100
Spend2: 2,200
Spend3: 300
Spend4: 1,590
Spend5:
Run Code Online (Sandbox Code Playgroud)
我试图grep只是以数字结尾的行
我试过
grep "[0-9]+$" filename.txt > filtered.txt
grep "\d$" filename.txt > filtered.txt
Run Code Online (Sandbox Code Playgroud)
但这些都没有用
输入文件
cityId;cityName;numOfBranches;numOfAtms
1;san bruno;7;11
3;milbrae;12;27
Run Code Online (Sandbox Code Playgroud)
我想以相反的顺序打印列,如下所示:
numOfAtms;numOfBranches;cityName;cityId
11;7;san bruno;1
27;12;milbrae;3
Run Code Online (Sandbox Code Playgroud)
编写了python来反转csv文件,但是需要相当长的时间。有什么办法可以在 bash 中做到这一点吗?
我有一个简单的文件,由我的awk脚本处理:
AAAAA BBBBBB
CCCCC DDDDDD
EEEEE FFFFFF
GGGGG HHHHHH
IIIII JJJJJJ
Run Code Online (Sandbox Code Playgroud)
首先,我想打印出最后一行,所以我开始
#!/usr/bin/awk
{if (NR==5){print $0;}}
Run Code Online (Sandbox Code Playgroud)
得到IIIII JJJJJJ的结果.
现在我想打印第5行后打印第2行.所以我将我的脚本更改为:
#!/usr/bin/awk
{if (NR==5){print $0; NR=2;}
if (NR==2){print $0;}
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,它是一个永无止境的循环.如何再次打印第5行然后再打印第2行而不再打印第5行?
为清晰起见,预期输出:
IIIII JJJJJJ
CCCCC DDDDDD
Run Code Online (Sandbox Code Playgroud)