python 在linux 中执行grep 命令
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 在linux 中执行grep 命令相关的知识,希望对你有一定的参考价值。
使用python 在linux 执行grep 命令: ps -ef | grep "loop" | wc -l
import os,sys,subprocess
output=subprocess.call([' ps -ef | grep "loop" | wc -l'],shell=True);
print output
output 返回值为 14
但是在linux中执行 ps -ef | grep "loop" | wc -l 这条命令返回值为:13 ,
请问:为什么相同的命令在python 中执行结果会 +1 ?
如何写能获取到正确的返回值呢?
如grep '\(ab|cd\)' a.txt 是查包含 ab或cd的行, grep 'ab' a.txt | grep 'cd' 是查包含ab和cd的行
要将结果赋到变量 a=`grep '\(ab|cd\)' a.txt ` 就行了
在python里就相当好办了,用不着grep啦,字符串的find函数就行啦
满意请采纳。 参考技术A 下面的函数封装了系统的grep功能,传递文件名和参数返回grep的结果
import subprocess
def grep(filename, arg):
process = subprocess.Popen(['grep', '-n', arg, filename], stdout=subprocess.PIPE)
stdout, stderr = process.communicate()
return stdout, stderr 参考技术B 两个都对,可能是你执行的时间不同。
Python30-12_Linux----常用命令-文件搜索
常用命令-文件搜索
1. 文本搜索grep
Linux系统中grep命令是一种强大的文本搜索工具, grep允许文本文件进行模式查找, 如果找到匹配模式, grep打印包含模式的所有行
grep一般格式为:
grep [-选项] \'搜索字符串\' 文件名
在grep命令中输入字符串参数时, 最好引号或双引号扩起来
列如:
常用选项
- -v :显示不包含匹配文件的所有行(相当于求反)
- -n : 显示匹配行及行号
- -i : 忽略大小写
grep搜索内容串可以是正则表达式
正则表达式是对逻辑字符串操作的一种逻辑公式, 就是用事先定义好的一些特定字符及这些特定字符的组合, 组成一个\'规则字符串\', 这个\'规则字符串\'用来表达对字符串的一种过滤逻辑
grep常用正则表达式:
- ^a : 行首,搜寻以a开头的行
- ke$ : 行尾, 搜索以ke结尾的行
- [] : 匹配[]里一系列字符串的一个
- . : 匹配一个非换行字符,
2. 查找文件: find
- find ./ -name test.sh 查找当前目录下所有名为test.sh的文件
- find ./ -name \'*sh\' 查找当前目录下所有后缀为.sh的文件
- find ./ -name "[A-Z]*" 查找当前目录下所有大写字母开头的文件 (1) *表示任意字符 (2)?表示任意一个字符 (3)[列举字符]表示列举出任意一个字符
- find /tmp -size 2M 查找在tmp文件夹下等于2M的文件
- find /tmp -size +2M 查找在tmp文件夹下大于2M的文件
- find /tmp -size -2M 查找在tmp文件夹小等于2M的文件
- find /tmp -size +4k -size -5M 查找在tmp文件夹下大于4k, 小于5M的文件
- find ./ -perm7777 查找当前目录下权限为7777的文件和目录
以上是关于python 在linux 中执行grep 命令的主要内容,如果未能解决你的问题,请参考以下文章
Python30-12_Linux----常用命令-文件搜索