Articles of grep

grep与正则expression式:空格不匹配,除非我添加一个断言

GNU grep 2.5.4在Ubuntu 10.04的bash 4.1.5(1)上 这匹配 $ echo "this is a line" | grep 'a[[:space:]]\+line' this is a line 但是这不是 $ echo "this is a line" | grep 'a\s\+line' 但是这也匹配 $ echo "this is a line" | grep 'a\s\+\bline' this is a line 我不明白为什么#2不匹配(而#1)和#3也显示匹配。 这里有什么区别?

将CSV中的第三个字段与GNU Linux(AWK / SED / GREP)中的模式文件进行匹配

当第三个字段与模式文件中的模式匹配时,我需要在CSV文件中打印所有行。 我已经尝试grep没有运气,因为它与任何领域不仅匹配第三。 grep -f FILE2 FILE1 > OUTPUT FILE1 dasdas,0,00567,1,lkjiou,85249 sadsad,1,52874,0,lkjiou,00567 asdasd,0,85249,1,lkjiou,52874 dasdas,1,48555,0,gfdkjh,06793 sadsad,0,98745,1,gfdkjh,45346 asdasd,1,56321,0,gfdkjh,47832 FILE2 00567 98745 45486 54543 48349 96349 56485 19615 56496 39493 正确的输出 dasdas,0,00567,1,lkjiou,85249 sadsad,0,98745,1,gfdkjh,45346 错误的输出 dasdas,0,00567,1,lkjiou,85249 sadsad,1,52874,0,lkjiou,00567 <—- I don't want this to appear sadsad,0,98745,1,gfdkjh,45346 我已经到处search,尝试不同的公式。 编辑:感谢Wintermute,我设法写这样的事情: csvquote file1.csv > file1.csv awk -F '"' 'FNR == NR { patterns[$0] = […]

CURL进度条:如何使用greppipe道和提取数字?

这是我迄今为止: [my1@graf home]$ curl -# -o f1.flv 'http://osr.com/f1.flv' | grep -o '*[0-9]*' ####################################################################### 100.0% 我希望使用grep,只从CURL输出的进度条中提取百分比。 我认为我的正则expression式是不正确的,我也不确定这个grep是否会影响正在不断更新的百分比。 我想要做的是基本上只得到CURL给我的百分比数字作为输出,没有别的。 感谢您的任何帮助。

如何使用BASH比较两个文本文件的相同的确切文字?

比方说,我有两个文本文件,我需要从中提取数据。 这两个文件的文本如下: 文件1: 1name – randomemail@email.com 2Name – superrandomemail@email.com 3Name – 123random@email.com 4Name – random123@email.com 文件2: email.com email.com email.com anotherwebsite.com 文件2是文件1的域名列表,从电子邮件地址中提取。 这些域名无论如何都是不一样的,而且是相当随意的。 我怎样才能得到与文件1中的文件2匹配的域名的结果? 先谢谢你!

如何使用egrep查找包含string的文件

我想在linux下find包含特定string的文件。 我尝试了一些但不能成功的东西: 找 。 -name * .txt | egrep mystring

在两个string之间重复提取文本? (awk?sed?)

我有一个名为“plainlinks”的文件,如下所示: 13080. ftp://ftp3.ncdc.noaa.gov/pub/data/noaa/999999-94092-2012.gz 13081. ftp://ftp3.ncdc.noaa.gov/pub/data/noaa/999999-94094-2012.gz 13082. ftp://ftp3.ncdc.noaa.gov/pub/data/noaa/999999-94096-2012.gz 13083. ftp://ftp3.ncdc.noaa.gov/pub/data/noaa/999999-94097-2012.gz 13084. ftp://ftp3.ncdc.noaa.gov/pub/data/noaa/999999-94098-2012.gz 13085. ftp://ftp3.ncdc.noaa.gov/pub/data/noaa/999999-94644-2012.gz 13086. ftp://ftp3.ncdc.noaa.gov/pub/data/noaa/999999-94645-2012.gz 13087. ftp://ftp3.ncdc.noaa.gov/pub/data/noaa/999999-94995-2012.gz 13088. ftp://ftp3.ncdc.noaa.gov/pub/data/noaa/999999-94996-2012.gz 13089. ftp://ftp3.ncdc.noaa.gov/pub/data/noaa/999999-96404-2012.gz 我需要产生如下所示的输出: 999999-94092 999999-94094 999999-94096 999999-94097 999999-94098 999999-94644 999999-94645 999999-94995 999999-94996 999999-96404

使用grep从根目录已经存在的字典中删除单词

我正在尝试写一个随机密码生成器。 我有一个单词字典,我想删除词根已经在字典中的单词,以便一个字典,看起来像: ablaze able abler ablest abloom ably 最终只会结束 ablaze able abloom ably 因为能和能够包含以前使用的能力。 我宁愿用grep来做这件事,这样我就可以更多地了解它的工作原理。 我有能力写一个程序在C或Python将做到这一点。

如何在awk中运行grep?

假设我有一个文件input.txt只有几列和几行,第一列是关键,目录dir与包含这些键的文件。 我想要find包含这些关键词的文件中的所有行。 起初我试图运行命令 cat input.txt | awk '{print $1}' | xargs grep dir 这不起作用,因为它认为键是我的文件系统上的path。 接下来我尝试了类似的东西 cat input.txt | awk '{system("grep -rn dir $1")}' 但是这也行不通,最后我不得不承认,即使这样也行不通 cat input.txt | awk '{system("echo $1")}' 在我试图用\逃离白色空间和$符号后,我来到这里请求你的build议,有什么想法? 当然,我可以做一些类似的事情 for x in `cat input.txt` ; do grep -rn $x dir ; done 这不够好,因为它需要两个命令,但我只需要一个。 这也说明了为什么xargs不工作,参数不是最后一个参数

grep命令在每次匹配后添加结束行

你有什么想法如何添加一些结束线 "==========================================================================================" 每场比赛之后 tail -f error.log -n 2000 | grep -B 10 -A 25 'Exception:' 这个命令打印所有exception日志,但我喜欢看到每个exception日志一个分隔线。

什么是最有效的不区分大小写的grep用法?

我的目标是匹配属于Yahoo!的电子邮件地址。 域名系列。 在* nix系统(我将使用Ubuntu)中,匹配模式的任何一种方法有哪些优点和缺点? 如果还有另外一个我没有想象的更优雅的解决scheme,请分享一下。 他们来了: 使用grep选项-i : grep -Ei "@(yahoo|(y|rocket)mail|geocities)\.com" 将字符转换为全部大写或小写,然后grep : tr [:upper:] [:lower:] < /path/to/file.txt | grep -E "@(yahoo|(y|rocket)mail|geocities)\.com" 为模式中的每个字符添加一个字符集(当然,下面的内容不会匹配“@ rOcketmail.com”之类的内容,但是您可以了解如果为每个字符检查大小写会发生什么情况): grep -E "@([yY]ahoo|([yY]|[rR]ocket)[mM]ail|[gG]eo[cC]ities)\.[cC][oO][mM]" /path/to/file.txt