grep -i "A" | sed 's/,.//'运行后显示lookbehind assertion is not fixed length
时间: 2024-03-09 13:45:01 浏览: 14
这个错误信息和上面的情况类似,是因为在 grep 命令中使用了类似于 "A" 这样的固定宽度的模式,而在 sed 中又使用了 lookbehind 断言,导致出现了类似 "lookbehind assertion is not fixed length" 的错误信息。
具体来说,sed 命令中的 ",." 表示匹配一个逗号后面的任意一个字符,这种模式也是可变宽度的,与 lookbehind 断言的固定宽度不兼容。因此,可以尝试使用其他类型的正则表达式模式来替换 ",.",或者避免使用 lookbehind 断言。
如果您的目的是在 grep 命令中匹配所有包含大写字母 "A" 的行,并提取每行中第一个逗号之前的内容,可以尝试使用以下命令:
```
grep -i "A" | sed 's/^\([^,]*\),.*/\1/'
```
这个命令首先使用 grep 命令匹配所有包含大写字母 "A" 的行,然后使用 sed 命令提取每行中第一个逗号之前的内容。其中,sed 命令中使用了固定宽度的正向断言 "^\([^,]*\),",它匹配每行中第一个逗号之前的所有字符。
相关问题
grep -i "*" | sed 's/,.*//'运行后显示lookbehind assertion is not fixed length
这是因为在 grep 命令中使用了类似于 "*" 这样的可变宽度的模式,而在 sed 中又使用了 lookbehind 断言,导致出现了类似 "lookbehind assertion is not fixed length" 的错误信息。
具体来说,grep 命令中的 "*" 表示匹配任意数量的字符,而这种模式是可变宽度的,与 lookbehind 断言的固定宽度不兼容。因此,可以尝试使用其他类型的正则表达式模式来替换 "*",或者避免使用 lookbehind 断言。
例如,如果您的目的是在 grep 命令中匹配所有包含逗号的行,并提取第一个逗号之前的内容,可以尝试使用以下命令:
```
grep -i "," | sed 's/\(^[^,]*\),.*/\1/'
```
这个命令首先使用 grep 命令匹配所有包含逗号的行,然后使用 sed 命令提取每行中第一个逗号之前的内容。其中,sed 命令中使用了固定宽度的 lookbehind 断言 "\(^[^,]*\),",它匹配每行中第一个逗号之前的所有字符。
ps -ef|grep %s| grep -v grep|wc -l>>/mnt/%d.txt
这是一个Linux命令,它的作用是查找进程并将进程数量写入指定的文件中。其中%s是要查找的进程名,%d是要写入的文件名。具体命令如下:
```shell
ps -ef | grep <进程名> | -v grep | wc -l >> /mnt/<文件名>.txt
```
解释一下每个部分的含义:
- ps -ef:列出所有进程的详细信息。
- grep <进程名>:查找包含进程名的行。
- grep -v grep:排除包含grep的行,避免将grep进程本身计算在内。
- wc -l:计算行数,即进程数量。
- >> /mnt/<文件名>.txt:将结果追加到指定的文件中。
举个例子,如果要查找名为nginx的进程并将数量写入/mnt/test.txt文件中,命令如下:
```shell
ps -ef | grep nginx | grep -v grep | wc -l >> /mnt/test.txt
```