Unix命令读取和剪切特定模式

时间:2019-09-01 19:16:46

标签: grep

我有一个包含以下各行的文件。我想读取文件并仅提取Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=512M; support was removed in 8.0 Java HotSpot(TM) 64-Bit Server VM warning: Using incremental CMS is deprecated and will likely be removed in a future release Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=512M; support was removed in 8.0 Logging initialized using configuration in jar:file:/app/cloudera-var/CDH-Parcels/parcels/CDH-5.13.3-1.cdh5.13.3.p0.2/jars/hive-common-1.1.0-cdh5.13.3.jar!/hive-log4j.properties OK 'hdfs://names/POC/DEV/STRING/MATCH' Time taken: 5.769 seconds, Fetched: 35 row(s) 。 我应该使用哪个$ docker run -p 4000:80 friendlyhello * Serving Flask app "app" (lazy loading) * Environment: production WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Debug mode: off * Running on http://0.0.0.0:80/ (Press CTRL+C to quit) 命令来获得特定的匹配。

import numpy as np
import pandas as pd
import re
df = pd.DataFrame({'ID':['123432','123321','324221','343212','431234','123213'],
                   'COUNTRY': ['FR', 'DE', 'UK', 'IT', 'ES', 'AU'],
                   'TEXT':['En un lugar de la Mancha, de cuyo nombre no quiero ', 'No ha mucho tiempo que vivía un hidalgo de los de lanza en astillero','Tenía en su casa una ama que pasaba de los cuarenta, y una sobrina que no llegaba a los veinte', 'Frisaba la edad de nuestro hidalgo con los cincuenta años', 'Es, pues, de saber que este sobredicho hidalgo, los ratos que estaba ocioso -que eran los más del año-, se daba a leer libros de caballerías','']})

df['KEYWORDS'] = df.apply(lambda row: [el for el in list_of_terms if re.findall("\\b{}\\b".format(el),row.TEXT] , axis=1)
df['KEYWORDS']= df.KEYWORDS.apply(lambda row : np.nan if len(row)==0 else row)
df.dropna(subset=['KEYWORDS'], inplace=True)

4 个答案:

答案 0 :(得分:0)

您尝试过使用less command吗?

less -p "pattern" <filename>

答案 1 :(得分:0)

无论您使用的是Linux还是macOS,这都可以工作:

pcregrep -o "hdfs://names\K.+?(?=\')" file

可以将\K理解为排除在其左边的所有内容,只返回右边的部分.+,然后?(?=\')匹配任何字符,直到'为找到。

如果在Linux中,您可以尝试:

grep -oP "hdfs://names\K.+?(?=\')" file

答案 2 :(得分:0)

  • 如果您希望该行包含您的模式:

grep "/POC/DEV/STRING/MATCH" file

输出将是:'hdfs://names/POC/DEV/STRING/MATCH'

  • 如果您希望没有整个行的确切模式,可以在命令中添加-o选项:

grep -o "/POC/DEV/STRING/MATCH"

输出将是:/POC/DEV/STRING/MATCH

答案 3 :(得分:0)

gnu awk版本

awk -F\' 'a=match($0,"hdfs://names") {print substr($2,a+9)}' file
/POC/DEV/STRING/MATCH