Questions tagged «grep»

对于与grep有关的问题,这是一种用于搜索文件中文本模式的命令行工具。对于有关grep本身的问题或因使用grep命令行工具引起的问题,请使用此标签。

4
我需要从/ etc / passwd查找使用grep列出的所有用户主目录
我有一个与此网站上的另一个问题类似的问题,该用户必须从/ etc / passwd中使用grep或awk查找所有用户的列表。这对我有用,但我尝试将其翻译以查找并列出它们的主目录。我已经知道您无法在一行中做到这一点,所以我知道我会使用管道。我已经完成了在线研究,但无法弄清楚问题出在哪里。如果我使用grep并执行以下操作: grep -oE '^[/*/]$' /etc/passwd ...这可能会给我一个错误,或者还会显示/ bin / bash文件,这不是我想要的。我只需要使用grep列出的用户名和主目录!我也不确定*是否会将其他正斜杠显示为字符,因为某些主目录中的多个正斜杠不止两个。

5
如何查找以**开头的行
我需要查找文件中是否有任何行以开头**。 我不知道该怎么做,因为它*被外壳解释为通配符。 grep -i "^2" test.out 如果行以2开头但有效 grep -i "^**" test.out 显然是行不通的。 (我还需要知道该行是否以a结尾,)但尚未尝试过)。

1
grep --exclude不排除我的文件
我正在目录中搜索特定的字符串(以查看该字符串存在的位置和文件中的所有实例)。但是,我想从搜索中排除一个特定的文件。 这是正在发生的事情- $echo "searchstring" > ./old_folder/useless_file $echo "searchstring" > ./new_folder/good_file $grep -r --exclude="old_folder/useless_file" searchstring * ./old_folder/useless_file:searchstring ./new_folder/good_file:searchstring 这是我想要的输出- ./new_folder/good_file:searchstring
8 grep  search 

3
grep如何确定文件是二进制文件?
我有一个很大的utf-8文本文件,经常使用来搜索grep。最近grep开始报告它是一个二进制文件。我可以继续使用搜索它grep -a,但是我想知道是什么更改决定了文件现在是二进制文件。 我有上个月的副本,该文件不再被检测为二进制文件,但是对diff他们来说不切实际,因为它们的差异超过20,000行。 file 将我的文件标识为 UTF-8 Unicode英文文本,行很长 如何找到字符/行/等。在我的文件中哪些触发了此更改? 类似的,非重复的问题19907涵盖了NUL的可能性,但grep -Pc '[\x00-\x1F]'说我没有NUL或任何其他ANSI控制特性。

3
取消所有与_PROXY匹配的ENV变量
我正在尝试取消匹配的所有环境变量_PROXY: env | grep -i _proxy | column -t -s '=' | awk '{ print $1 }' | grep -iv 'no_proxy' | xargs -0 -I variable unset variable 却失败了xargs: unset: No such file or directory。 但是,如果尝试更改unset为echo,那么一切似乎都可以按预期进行:我得到了一组已设置的变量。 env | grep -i _proxy | column -t -s '=' | awk '{ print …

4
如何在有空格的grep输出上执行xargs grep?
我正在基于正则表达式搜索文件,然后尝试在这些文件中搜索内容。例如,我有类似 #Find all C++ files that match a certain pattern and then search them find . -name "*.cpp" | grep "<name regex>" | xargs grep "<content regex>" 我遇到的问题是某些路径中有空格,这会造成混淆xargs。我知道,如果我只是使用find,则可以使用-print0参数(以及上的-0参数xargs)来防止xargs将空格视为定界符。有类似的东西grep吗? 还是我完全以错误的方式解决了这个问题?天真,find要grep以xargs grep对我来说很有意义,但我持开放的态度产生相同的结果的其他方法。
8 shell  grep  find  quoting  xargs 

2
根据grep regex重定向输出
我gradle run用来启动REST服务器。REST服务器的输出如下所示: XXX.XXX.XX.XXX - <moreinfo> randomtext randomtext XXX.XXX.XX.XXX - <moreinfo> XXX.XXX.XX.XXX - <moreinfo> randomtext XXX.XXX.XX.XXX - <moreinfo> XXX.XXX.XX.XXX这是IP地址,randomtext是错误消息。不幸的是,所有输出都定向到stdout。 如何将以IP地址开头的所有行定向到一个名为的文件中,err.log并将其他所有行定向到all.log? 不幸的是,gradle run由于它是REST服务器,因此只能启动一次且不能停止。 也许使用tee,grep组合?

3
打印不包含标点符号的所有行
我想要一个可以打印不包含标点符号的所有行的正则表达式模式: 输入: .This is line 1 This is ! line 2 This is line (3) This is line 4 输出:(应为) This is line 4 到目前为止我尝试过的是: grep '[^[:punct:]]' file.txt 但是它会显示所有不是标点符号的字符。

2
用部分可选的内容来抓取一段文本
我在一个非常大的日志文件(例如A.log)中描述了一个事件的多个条目。我想对日志文件中的事件条目做两件事: 计算每个此类条目的出现次数(这不是强制性要求,但是很高兴拥有)。 将实际条目提取到一个单独的文件中,并在以后进行研究。 典型的事件条目如下所示,并且它们之间还会有其他文本。因此,在下面的示例中,有两个事件条目,第一个包含两个DataChangeEntry 有效负载,第二个包含一个DataChangeEntry 有效负载。 Data control raising event :DataControl@263c015d[[ #### DataChangeEvent #### on [DataControl name=PatternMatch_LegendTimeAxis, binding=.dynamicRegion1. beam_project_PatternMatch_dashboard_LegendTimeAxis_taskflow_LegendTimeAxis_beamDashboardLegendTimeAxisPageDef_beam_project_PatternMatch_dashboard_LegendTimeAxis_taskflow_LegendTimeAxis_beamDashboardLegendTimeAxis_xml_ps_taskflowid.dynamicRegion58. beam_project_PatternMatch_view_LegendTimeAxis_taskflow_LegendTimeAxis_beamVizLegendTimeAxisPageDef_beam_project_PatternMatch_view_LegendTimeAxis_taskflow_LegendTimeAxis_beamVizLegendTimeAxis_xml_ps_taskflowid.QueryIterator] Filter/Collection Id : 0 Collection Level : 0 Sequence Id : 616 ViewSetId : PatternMatch.LegendTimeAxis_V1_0_SN49 ==== DataChangeEntry (#1) ChangeType : UPDATE KeyPath : [2014-06-26 06:15:00.0, 0] AttributeNames : [DATAOBJECT_CREATED, COUNTX, …

8
Grep其余部分…比赛结束后
我有一个仅包含两行的文件,具有以下结构: $ cat /tmp/pwpower.log 000D6F0000D34227, -114.10 000D6F0001A405C4, -130.09 这些值是我的太阳能发电厂的功率值。负值表示生成。 我需要通过grep / sed / awk提取的值-哪种方法最聪明。我需要分别提取两个值并且没有减号。 我现在做的事有点愚蠢,但是可以用-我敢肯定你们中的许多人会为我提供更聪明的方法:-)在这里,我当然只看到值加上减号。 要获得第一个值: cat /tmp/pwpower.log |grep -o "\-.*" | head -n 1 要获取第二个值: cat /tmp/pwpower.log |grep -o "\-.*" | tail -n1 和相关的问题,是否有一种简单的方法来获取这些STRING并进行转换,以便我可以计算出SUM?


2
对两个完全独立的事物进行grep并将值分配给独立变量的最有效方法是什么?
CentOS 6.x版 我想将curl,grep的输出用于两个完全独立的字符串,并将它们各自的值分配为变量。什么是最有效的方法(不将输出写入磁盘)? 通常,我会考虑使用类似以下内容的脚本: #!/usr/bin/env bash foo1=$(curl https://domain.com/file.xml | grep string1) foo2=$(curl https://domain.com/file.xml | grep string2) 但这最终要花两遍,而且效率极低。有没有更好的办法?希望解决方案涉及更少的通行证吗?

3
为什么pidof和pgrep的行为有所不同?
我有一个初始化脚本,/etc/init.d/myservice用于初始化这样的服务: ... start() { ... daemon /usr/sbin/myservice ... } stop() { ... pgrep myservice pidof myservice ps -ef | grep myservice ... } 当我尝试停止该服务时,这是输出: 10000 10001 10000 root 10000 1 0 09:52 ? 00:00:02 /usr/sbin/myservice root 9791 9788 0 10:06 pts/1 00:00:00 /bin/sh /sbin/service myservice stop root 10001 9791 1 …

1
为什么grep有时显示文件名,有时却不显示?
有人可以向我解释为什么我没有得到示例1中的完整路径吗? 示例1-返回找到的行 grep MODIFY /opt/releases/packages/cr_c_cr6/sas/dbms/*/*; outcome: MODIFY 示例2-返回完整路径 grep MODIFY /opt/releases/packages/cr666/sas/dbms/*/*; /opt/releases/packages/cr666/sas/dbms/sti/FA_DISCLOSURE.ddl:MODIFY QUANTITY NUMBER; 我已经找到了解决方案,但是我想了解这里发生的事情。1条命令,不同的结果/处理。
8 grep  wildcards 

2
grep比赛前一行加上比赛
zzzzzzzzz aaaaaaaaa bbbbbbbbb & ccccccccc & ddddddddd hhhhhhhhh eeeeeeeee fffffffff & ggggggggg & 在上面的行中,我想要的是grep/ sed/ awk(任何方法都可以)行上有&符号加一行的符号。因此,例如,所需的输出将如下所示: aaaaaaaaa bbbbbbbbb & ccccccccc & eeeeeeeee fffffffff & ggggggggg & 以下是我没有运气尝试过的。 egrep "&" | -b 1 file.txt

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.