我想在Solaris UNIX上的文件中grep 2个模式
这是grep'pattern1或pattern2'文件名
以下命令不起作用:
grep'pattern1\| pattern2'文件名
这个命令有什么问题
注意:我在Solaris上该命令对我很有效。请添加其他信息,例如您的平台以及您正在使用的确切正则表达式和文件内容(最小化到仍然重现该问题的最小示例)。(我会在你的帖子上加一条评论,但是没有足够的声誉。)这应该是正确的。确保添加或不添加适当的空格,即“pattern1\| patter
标签: Grep
duplicate-dataline-breaksno-match
让我先说我不想只打印重复的行,也不想删除它们
我正在尝试将grep与一个模式文件一起使用,以解析一个大型数据文件
例如,模式文件可能如下所示:
1243
1234
1234
1234
1354
1356
1356
1677
aatta 1243 qqqqqq
yyyyy 1234 vvvvvv
ttttt 1555 bbbbbb
ppppp 1354 pppppp
yyyyy 3333 zzzzzz
qqqqq 1677 eeeeee
我使用了下面这样的脚本
zgrep-i xxxx FileA | grep-o“RID=[0-9 | A-Z]*“| uniq | cut-d”=“-f2 | xargs-0-i string zcat FileB | requestID=“requestID=$stringone=$requestID$string grep stringone FileB
在使用xargs点之前,我的o/p是
01982893213982312 - RID 1
32103213213213213 - RID
Pandas中是否有一个类似grep的内置函数,用于在某行有字符串或值时删除该行?
提前感谢。看看df['column\u label].str
下面的示例将删除列A包含“A”字符且“B”等于20的所有行
In [46]: df
Out[46]:
A B
0 foo 10
1 bar 20
2 baz 30
In [47]: cond = df['A'].str.contains('a') & (df['B'] == 20)
In [48]: df.drop
我试图通过tail-f跟踪日志文件,并使用grep对其进行过滤:
tail-f | grep-f'
我希望输出在同一行更新,而不是在新的行上更新
标准。这意味着只要grep找到匹配项,stdout上就只有一行输出在改变
我试图用几个命令(如prinft、sed、awk、echo)分别过滤换行符并添加回车符,但没有成功。
我在一台AIX机器上,所以不是每个grep或其他命令的manpage选项都受支持
谢谢你的帮助 尝试这样做:
tail -f <logfile> | awk '/so
如何改进以下比较两个文件的某些行(以“@”开头的行)的方法?我确信这可以在一条线上完成,而不需要尴尬的临时文件。我对Linux还很陌生,所以对我放松点!提前谢谢
grep "^@" myfile1 > temp1
grep "^@" myfile2 > temp2
diff temp1 temp2
在Bash中,可以使用它们不是命名管道,它们是命名管道:)@MattJoiner那么,薛定谔管道?它们不是临时文件ಠ_ಠ它们可以是命名管道,也可以不是命名管道,这取决于底层操作系统支持的
我如何将@符号后面的行变灰
我想这应该行得通:grep-A@file
@SRR797059.1 HWIEAS269_0001:5:1:1049:4995 length=38
CGAGCTCCGGCTCGGAGGACCATACTATCGTATGCNGN
+SRR797059.1 HWIEAS269_0001:5:1:1049:4995 length=38
bbbbbbbbbbbbbb^bb]_^aR_]_b_b[_BBBBBBBB
@SRR797059.2 HWIEAS269_0001:5:1:1
我对在特定文件类型中查找字符串感兴趣。
下面的命令符合我的目的
find /any/path -type f -name "*.log" | xargs grep -B2 -A2 'SUMMARY' {} \;
它给出以下输出:
--
/path/to/file.log-line1
/path/to/file.log-line2
/path/to/file.log:text SUMMARY text
/path/to/file.log-line1
/path/to/file.log-li
我一直在使用grep对目录中的文本执行递归搜索,即
grep -Hrn "some-text" ./
但是,当我需要搜索指针或指针的指针时,我遇到了一些麻烦:
grep -Hrn "double**" ./
> grep: repetition-operator operand invalid
我已经尝试了一些方法,包括通过谷歌搜索找到的一些方法:
grep -Hrn "double[**]" ./
grep -Hrn "double[*][*]" ./
但两者似乎都不起作用。有指针
我试图在Linux目录中使用grep文件搜索包含字符串**Post的行。*字符是一个通配符,我不知道如何使它成为这个搜索的文本。例如,\*\*Post不起作用。什么是转义*字符的正确方法,以便在本例中可以直接使用它?我使用包含以下文本的文件进行了测试:
**Post
*Post
Post
我只想用**Post
我的命令如下
grep-irn“\*\*Post”
双引号很重要
命令的结果是
a.txt:1:*Post
而下面的命令
grep-irn“\*Post”
输出
a.txt:1:*
标签: Grep
pcreregex-lookaroundspositive-lookbehind
在bash上,我试图在一个空格后立即获取大写字母(a来自文件a.jpg)
这是一个负前瞻(?!,它应该在空格后返回任何大写字母。因此,它应该只返回a。但是,它返回所有大写字母:
P
T
F
A
似乎它将前斜杠视为空白?为什么?我如何才能只获得最后一个A
应在空格后返回任何大写字母
不,它根本不是这么说的。它说“任何大写字母后面都不跟正斜杠和s。”它们都不跟那个。所以你得到了所有的大写字符
你想要的是积极的回顾
(?<=\s)[A-Z]
(?
应在空格后返回任何大写字母
不,它根本不是这
我有一个test.txt文件
#test.txt
odsdsdoddf112 test1_for_grep
dad23392eeedJ test2 for grep
Hello World test
garbage
#test.txt
用于grep的ODSDODDF112测试1
grep的dad23392eeedJ测试2
你好,世界测试
垃圾
我想提取后面有空格的字符串。我用了下面的表达,它起了作用
grep -o [[:alnum:]]*.[[:blank:]] test.txt
grep
有没有人知道cgvg有什么方法可以避免引用?通常,当我需要字符串中的引号时,我只使用相反的引号类型(单引号与双引号)。但有时我两者都需要。像这样:
cg '["'].*something.*["']'
转义随附的单引号无助于:
cg '["\'].*something.*["\']'
第二层或第三层转义也不是:
cg '["\\'].*something.*["\\']'
cg '["\\\'].*something.*["\\\']'
想法
谢谢大家! 你能以转义十六进制(ASCII)的
我在生产环境中运行apache,该环境将请求写入access.log。我需要计算每分钟命中apache服务器的请求数。
我试着用下面的grep命令来计算通过下面的grep命令击中服务器的请求数,但它没有给出计数,而是打印出了整个日志。有人能帮我吗
$ egrep "14/Oct/2014:13:36|14/Oct/2014:13:37" | wc -l access_log
10.8.160.150 - - [14/Oct/2014:13:36:15 -0700] "GET /ads/2011
上面提到的命令正在工作。但是有4位数的短版本吗
这不起作用:
grep -w "ing_[0-9][0-9][0-9][0-9]"
Grep默认使用基本正则表达式。在BRE中,你需要摆脱卷曲括号,以便将卷曲括号视为重复量词。
grep -w "ing_[0-9]\+ {4}"
示例:
grep -w "ing_[0-9]\{4\}" file
如果幸运的话,您的grep支持现代(Perl)正则表达式,请尝试-p参数
$ echo 'ing_6786 says' | grep -w "ing
我使用的是windows 10,我试图在包含子文件夹的文件夹中找到精确的单词匹配。我正在寻找“提示”一词(不区分大小写)。当我搜索tip时,我会得到一个巨大的文件列表,其中包含“multiple”这样的单词,我只想要包含确切单词的页面:tip。我如何搜索?
谢谢。我正在使用格雷文,上面给出的答案很好。\btip\b
再次感谢。我们很清楚,你是真的在使用grep还是其他工具?假设你在使用grep或其他一些正则表达式工具,\b是一个词边界,所以寻找\btip\b应该可以。我正在使用grepwin。谢
我有一些c文件,我想收集所有文件中的函数声明,我通过以下命令实现了这一点:
cat*.c|grep-E“^\w”| sed的/$/;/”
真正的问题来了,我想扩展它,在函数之前打印文件名,最终输出的格式应如下所述:
函数void xxx\u func()
提前谢谢
资料来源:
您可以在不使用猫的情况下执行此操作
grep-h function*.c | sed“s/^.*\(function\)\s\+\(.*)$/\1\t\2;/”
标签: Grep
gzipzcatmap-files
嗨,我有一些档案的FW日志,偶尔im需要比较他们与一系列的IP地址(千),以获得日期和时间,如果IP地址匹配。我当前的脚本如下:
#input the list of ip into array
mapfile -t -O 1 var < ip.txt while true
do
#check array is not null
if [[-n "${var[i]}"]] then
zcat /.../abc.log.gz | grep "${var[i]}
下面的子目录中有很多config.php文件,我在其中调用find命令,我只想列出那些找到grep字符串匹配项的路径名。这是我到目前为止所做的尝试
find `pwd -P` -name config.php -print -exec grep 'assetBasePath.*cloudfront' {} \;
它部分地完成了这项工作,因为find会列出它找到的所有config.php文件的路径,如果模式确实匹配,grep会在文件中打印匹配行
我想要实现的是一个类似于上面的输出,但是其中只显示
我有档案:
# more file
(WORD = (TCPIP = (PROTOCOL = TCP)(WORD = ALIAS_NAME)(PORT = 10234))
但是当我尝试匹配文件中的部分行(由grep-w)时,grep也会匹配该行(尽管这是整行的一部分)
我的问题是如何精确匹配文件中的行
所以,如果我使用grep或其他类似sed/awk的东西,它将只匹配整行
Lidia通过返回整行,grep只是表示is在该行中找到了字符串。如果只想在命令行上查看匹配的文本,可以(例如)使
标签: Grep
filenamesmultiple-instances
对不起,我的基本问题是,我的文件夹中有超过1000个文本文件。这是一种在所有文件上运行相同命令并自动将新文件输出到不同文件夹并赋予它们相同名称的方法吗
即
grep'something'path/to/file.txt>path/to where-other/file.txt
谢谢大家! 如果所有文件都在同一目录中,可以通过以下方式轻松完成:
cd path/to
for i in *.txt; do grep 'something' "$i" >"path/to-somewhere-el
我有这个:
# spam.txt
src/blahblah/potato.py
src/migrations/helloworld.py
spam/blahblah/thing.py
src/thingy/other.cpp
如何将排除链接到同一模式中?i、 e.如何在下面编写“模式?”,以获得相同的结果
$ cat spam.txt | grep 'src.*\.py' | grep --invert-match '/migrations/'
src/blahblah/potato.py
我想从文件名中提取一个特定的部分来处理它们。
例如:
所以我只想得到有名字的部分。
如何做到这一点?有几种方法可以做到这一点。这里有一个循环:
for file in REZ-*-??-??-????.png
do
name=${file#*-}
name=${name%-??-??-????.png}
echo "($name)"
done
给定各种各样的文件名,包括间距、附加连字符和换行符的各种边缘大小写:
REZ-Anna-Maria,de-la-Cruz-12-32-201
我有这个案子。我需要为一些正则表达式和结果字符串(或字符串数组)grep一个文件,我需要保存到变量以供以后使用。这必须通过吞咽来实现
在我看来应该是这样的:
var line;
gulp.task('grep', function(callback) {
line = someCoolSyncFunction('/needle/', './haystack.txt');
callback();
});
gulp.task('useIt', ['grep'], function()
使用[:space:]组通过grep执行搜索时,不会检测到新行字符属于该组。你知道为什么会这样,以及如何在[:space:]组中包含新行字符(正确识别制表符和空格)?这有可能是因为在终端中回显时LC_CTYPE变量为空?(使用locale命令时,将其设置为LC_CTYPE=“en_US.UTF-8”)
Grep版本:2.25
系统:Ubuntu 16.04双启动
非常感谢任何帮助 Grep分别搜索每一行。你在正则表达式中做什么并不重要;正在搜索的字符串不包含\n。'[:space:]空格字符:在
下面我有一个bash脚本,每当我尝试执行它时,它都会说只能指定一种类型的列表,关于这段代码的错误有什么线索吗?我的解释是,我们使用grep在文件femalenames.txt中查找用户键入的第一个字符($1)的单词(-word),然后使用cut命令打印第二个字符字段16-20?有点困惑
#!/bin/bash
grep -w $1 femalenames.txt | cut -f2 -c16-20
你只能将-f或-c与cut一起使用,不能两者都使用..哦,我明白了,谢谢你的快速响应:)@Sun
我有一个超过10000个单词的单词列表,但这只是一个示例:
'Tis midnight
sev'n words spoke
th'Immortal night
A wonder-working pow'r
Wondrous deliv'rer to me
我想删除所有包含撇号的单词,因此列表应如下所示:
midnight
words spoke
night
A wonder-working
Wondrous to me
如何使用升华文本来查找撇号和智能撇号(”)?您可以使用字符类[“”]匹配
我在做什么:
我正在使用shell模块读取一个文件,并从整个文件中获取唯一的错误代码,结果是result.out
我是本地文件file1,其中包含已知错误代码列表
现在我想检查文件1中result.out的任何值是否匹配,然后重新启动服务
我可以在shell中使用以下命令来实现这一点
hosts: tsm_client
我只想返回至少有一个字母或数字的行
使用egrep“[a-zA-Z0-9]”
但不是egrep“[\w]”
下面的例子
对我做错了什么有什么建议吗
echo '*****Full Input*****';cat GrepTestLog.log; echo '*****After RegEx match*****';cat GrepTestLog.log | egrep "[a-zA-Z0-9]"
*****Full Input*****
AB123C-1 *nbqtwrt
标签: Grep
fedoramultilinehttpd.conf
我是shell脚本和Linux环境的新手
在我的项目中,我试图从httpd.conf文件中搜索以下文本
<Directory '/somedir/someinnerdir'>
AllowOverride All
</Directory>
允许超越所有
然后删除此文本并再次重写相同的文本。
进行此重写的原因是,该脚本将在首次安装web应用程序时运行,但它可能会在一段时间后再次运行,因为此shell脚本的其他部分也在执行其他任务。因此,这段文字第一次不会被发现,只会被写
当我使用grep-nrF'--prefix'*时,我得到无法识别的选项--prefix
是否有任何方法可以使用grep找到这个特殊的字符,例如--?使用--告诉grep其余的不是命令行选项
grep -nrF -- '--prefix' *
使用--告诉grep其余部分不是命令行选项
grep -nrF -- '--prefix' *
一般的方法是使用--是正确的,但是grep特定的解决方案是使用-e:
grep -nrFe '--prefix' *
从man grep:
使用模式作为模式
下面的文本在一个文件中
Pseudo name=Apple
Code=42B
state=fault
Pseudo name=Prance
Code=43B
state=good
需要从上述文件中grep42B,以便只显示输出
Pseudo name=Apple
Code=42B
state=fault
使用前后修饰符
grep -B 1 -A 1 42B file.txt
使用前后修饰符
grep -B 1 -A 1 42B file.txt
不幸的是,只有在AIX上:
grep -
我已经学会了如何在比赛前后grep行,以及如何grep最后一场比赛,但我还没有学会如何grep最后一场比赛及其下面的行
该场景是一个服务器日志。
我想列出命令的动态输出。该命令可能在一个服务器日志中使用多次。因此,我设想匹配将是命令,并且不知何故,grep可以使用-A和其他标志或尾部命令的变体来完成我正在寻找的结果。使用awk代替:
awk '/pattern/{m=$0;l=NR}l+1==NR{n=$0}END{print m;print n}' foo.log
小测试,找到与/8/匹配的
当尝试从make中筛选很长的输出以获取特定的警告或错误消息时,第一个想法如下:
$ make | grep -i 'warning: someone set up us the bomb'
不过,结果并不完全令人满意。输出不仅包含来自grep的筛选结果,还包含来自make目标中使用的其他工具的stdout和stderr消息
现在的问题是:
其他输出来自哪里
如何编写过滤命令,使输出仅包含过滤后的行
排除标准:
make 2>/dev/null | grep -i 'warning: so
我试图找出两个变量之间的差异:
左class='f012 f013'和右class='f012 f013 f014'
我需要找到左边没有的所有f*。我还尝试了以下同样不起作用的方法:
echo'f012 f013'| grep-o-v'f012 f013 f014'
有人能告诉我我做错了什么吗?大多数*nix工具要求每行有一项,可能更合适:
$ cat haystack
f012
f013
$ cat needles
f012
f013
f014
$ comm -13 haystack need
对于仅涉及ASCII的情况,我们可以使用LC_ALL=C显著加快grep过程。
由于bzgrep与grep非常相似,因此我也尝试采用这种方法。结果证明这没什么帮助。
我使用的命令行如下所示:
$ time bzgrep Debug 001.log.bz2 | sed -n '/^09:00/ , /^09:30/p' | grep "Pattern1.*Pattern2" > /dev/null
$ time LC_ALL=C bzgrep Debug 001.log.bz2 | sed
我有这个日志文件,我试图避免打印包含Patrn“APLHA”的文本
我尝试通过这种方式,但没有成功。它打印文本的其余部分,除了“ALPHA”
cat日志文件| grep-v“ALPHA”
结果:
我所期望的是,包含“ALPHA”的整个日志没有打印出来,如下所示:
+++ skdfhahjsahsdjk >
* KJENRFKES DFJKLSDFJEDFJDJFKLJDKFJKSDLFJL
SDFSDGDRGRTG
WEFETTFYRT #168113++-
+++
标签: Grep
pattern-matchingwhite-labelling
我的任务是为应用程序添加白色标签,使其不包含对我们公司、网站等的引用。我遇到的问题是,我有许多不同的模式要寻找,并希望保证所有模式都已删除。由于应用程序不是在内部(完全)开发的,因此我们不能简单地在messages.properties中查找出现的情况,也无法完成。我们必须浏览JSP、Java代码和xml
我正在使用grep筛选结果,如下所示:
grep SOME_PATTERN . -ir | grep -v import | grep -v // | grep -v /* ...
当我在命
我在OS X上运行此命令以提取逻辑板ID:
ioreg -l | grep board-id
这给了我这个输出:
| "board-id" = <"Mac-FC02E91DDD3FA6A4">
|“板id”=
我唯一感兴趣的部分是“Mac-FC02E91DDD3FA6A4”。有没有办法过滤grep的结果,只显示这一部分?或者我可以做第二步来清理grep结果吗?使用awk您可以这样做
ioreg -l | awk -F\" '/board-id/ {print $4}
Mac
在递归目录的大列表中,我正在搜索不包含以模式“mt”结尾的文件的目录名
在这种情况下,如何搜索目录名
我搜索网络并找到命令,以查找包含带有f的文件的目录名:
find . -type f -name '*f*' | sed -r 's|/[^/]+$||' | sort | uniq
但是如何搜索没有mt的目录名呢
find命令,但未找到正确的参数
我可以在递归目录中搜索文件名,但我感兴趣的是在递归模式中搜索目录名,该模式不包含包含mt模式的文件。您可以使用:
find . -type f -
我正在将我所有的svn提交日志消息传递到一个文件中,并且只希望从中获得JIRA发行号。
有些行可能有不止一个发行号,但我只想获取第一个发行号
模式为XXXX-999(字母和数字字符的数量不是常数)
另外,我不希望显示整行,只显示JIRA编号,没有重复项。我使用了下面的命令,但它不起作用
有人能帮忙吗
cat /tmp/jira.txt | grep '^[A-Z]+[-]+[0-9]'
日志文件示例
---------------------------------------------
我使用Ansible的shell模块查找特定字符串并将其存储在变量中。但如果格雷普没有发现任何东西,我就错了
例如:
- name: Get the http_status
shell: grep "http_status=" /var/httpd.txt
register: cmdln
check_mode: no
当我运行这个Ansible playbook时,如果http\u status字符串不存在,playbook就会停止。我不明白
即使找不到字符串,如何使Ansible
我需要在一个文件中的特定位置为一个文件grep两个连续字符。我可以使用(在本例中,我为数字1进行grep)来grep单个字符:
这将搜索第一个字符,但我不知道如何检查第二个字符。
这两个字符是时间戳,我需要搜索18到23小时,以及00到06小时。
如有任何帮助,我们将一如既往地表示感谢:)如果您正在查找集合(18、19、20、21、22、23)中的一个小时,您希望在一组括号中使用“|”运算符:
grep -E '^.{50}(18|19|20|21|22|23)' file.txt
这将匹配从
问题在标题中
Emacs默认grep命令为:
grep-nh-e
我知道-e表示匹配模式。什么是-nh?应在手册页中说明:
-n,-行号
在输出的每一行的输入文件中,使用基于1的行号作为前缀。
(-n由POSIX指定。)
-h,无文件名
抑制输出时文件名的前缀。这是存在时的默认值
只有一个文件(或唯一标准输入)要搜索
↳ Emacs的默认值是-nH而不是-nH。大写字母H告诉grep以可点击链接的形式显示带有文件名的结果。小的“h”告诉grep不要显示文件名 知道大多数shell命令都有手动页
我可能错过了一些非常愚蠢的事情,但我想不出来。基本上,我有一个SAS宏变量列表,我想知道它们在我的代码库中的使用位置。对于那些不了解SAS的人来说,基本上是使用宏变量,你可以用符号AND进行操作,因此如果变量名为var1,你可以用&var1(或&var1.但这对这个问题并不重要)来引用它
因此,我一直在使用grep进行如下搜索:
grep-iRw“&宏变量”*
我无法复制/粘贴确切的结果,但我运行了以下操作,它返回了0个结果:
grep-iRw“&lead\u year”*
然后我运行了以下命令
我有一个json:
[
{
“id”:36,
“名称”:“管理员密钥”,
“角色”:“管理员”,
“到期”:“2020-05-07T12:02:09Z”
},
{
“id”:35,
“名称”:“tmp”,
“角色”:“管理员”,
“到期”:“2020-05-07T12:01:24Z”
}
]
我需要通过“管理员密钥”进行筛选以获得所需的结果:
36我找到了解决办法:
|jq.[]| select(.name | test(“admin key”))|.id'请改用grep,grep是一个面向行的
我在文件FOO和FOO.cc中包含了一些文本“bar”
有没有办法告诉ack grep在没有扩展名的文件中搜索(即FOO)
我试过这样的方法:
ack-grep --type-set=foo=FOO bar
它返回foo.cc中的文本,但不返回文件foo
我还将--type集添加到.ackrc文件中,调用
ack-grep --help-types
显示ack grep正在查找.FOO文件。您可以将ack grep的-a(搜索所有内容)与-G(仅搜索与给定正则表达式匹配的文件)。比如:
ac
我发现在这个正则表达式中可以找到两个字符之间的字符串。在我的例子中,我想找到'和'之间的每个模式。这是正则表达式:
(?<=‘)(.*?)(?=’)
有什么遗漏吗?这些都是积极的前瞻和回顾断言。您需要使用PCRE(Perl Compatible Regex)启用它,也许最好使用GNUgrep中的-o选项仅获取匹配的部分:
grep -oP '(?<=‘)(.*?)(?=’)' file
grep-oP'(?这些是积极的向前看和向后看断言。您需要使用PCRE(Perl Compat
我有这样的文件:
文件1:
TMCS09g1008676.1
MAMBO.3.3.2.1
TMCS09g1008678.1
TMCS09g1008678.2
CSH.1.2
TMCS09g1008681.3
TMCS09g1008682.1
TMCS09g1008683
TMCS09g1008676
MAMBO.3.3.2
TMCS09g1008678
TMCS09g1008679
CSH.1
TMCS09g1008681
TMCS09g1008682
TMCS09g1008683
文件2:
标签: Grep
aws-secrets-manager
因此,我们的秘密存储在AWS Secret Manager中,我可以使用awscli
aws secretsmanager get-secret-value --secret-id test | grep SecretString
但输出的格式如下:
"SecretString": "{\"REACT_APP_API_URL\":\"https://example.com/api\"}",
如何获得这种格式的输
1 2 3 4 5 6 ...
下一页 最后一页 共 25 页