草庐IT

grepping

全部标签

linux - 存储在变量或管道到另一个命令时如何保留 grep 颜色?

我想在bash脚本中使用grep来查找文件中的匹配行,用颜色突出显示匹配项,然后使用在表格中打印结果列命令。像这样:data=`catfile.data|egrep-i--color"$search"`echo$'\n'"col1"$'\t'"col2"$'\t'"col3"$'\t'"col4"$'\n'"$data"|column-t-s$'\t'上面的代码按要求做了所有事情,除了颜色丢失了。这是一个简化的例子:如您所见,当我使用grep时,结果以彩色打印在单独的行上,但是当我将结果保存到变量然后打印变量时,换行符和颜色消失了。有什么办法可以满足我的要求吗?

linux - 转义grep中的感叹号?

我有这个完整的行(下面awk中的rpm命令)我想从某些文件中grep出来,包括引号。当我尝试grep和grep-F时,我似乎无法获得正确的输出。我尝试从grep语句中删除行尾的一部分,它看起来像“!”导致问题。我尝试用单引号将字符串括起来,但也没有运气。谢谢你。rpm-qVa|awk'$2!="c"{print$0}' 最佳答案 您有几个选择。使用单引号-当您需要文字单引号时,只需去掉单引号,添加一个带反斜杠的引号,然后返回:grep'rpm-qVa|awk'\''$2!="c"{print$0}'\'文件名使用POSIX字符串:g

linux - 如何使用 grep(或其他 LSB 工具)计算 .po 中的空翻译?

我可以使用如下命令在vim中搜索空翻译:/""\n\n但我的任务是查找未翻译字符串的数量。任何想法如何使用每个linux机器都应该有的标准工具来做到这一点(请不要单独的包)。这是包含2个已翻译字符串和2个未翻译字符串(长和短变体)的.po文件示例。msgid"translatedstring"msgstr"sometranslation"msgid"non-translatedstring"msgstr""msgid"""Somelongtranslatedstringwhichstartsfromnewline""andcanlastforfewlines"msgstr"""Tran

linux - 如何在不填满磁盘空间的情况下对 tar 存档中的文件进行 grep 查找模式

我有一个很大的~5GB的tar存档。我想对存档中的所有文件进行grep查找模式(并打印具有该模式的文件的名称),但不想通过提取存档来填满我的磁盘空间。我能做到吗?我试过这些,但这并没有给我包含模式的文件名,只是匹配的行:tar-O-xftest.tar.gz|grep'this'tar-xftest.tar.gz--to-command='grepawesome'此外,tar的此功能记录在何处?tarxftest.tar$文件 最佳答案 似乎没有人发布这个只处理一次存档的简单解决方案:tarxzfarchive.tgz--to-co

linux - grep - 限制读取的文件数

我有一个包含超过100,000个文件的目录。我想知道字符串"str1"是否作为这些文件内容的一部分存在。命令:grep-l'str1'*读取所有文件所花费的时间太长。如果找到匹配项,我如何让grep停止读取任何进一步的文件?任何单线?注意:我试过grep-l'str1'*|head但该命令花费的时间与前一个命令一样多。 最佳答案 在命令参数中命名100,000个文件名会导致问题。它可能超过了shell命令行的大小。但是如果您使用递归选项并仅使用文件所在目录的名称(即.如果您想在当前目录):grep-l-r'str1'.|head-1

linux - 如何在 *nix 上查找/grep 目录名称匹配 "x"但不匹配 "y"的所有路径?

我有一个像这样的文件夹结构(这是一个小片段):└──test  └──cases    └──model      ├──client      │├──socketsTest.coffee      ├──server      │  └──socketsTest.coffee      └──shared      └──findersTest.coffee问题是,如何列出所有以.coffee结尾且不存在于client文件夹中的路径?以下命令返回server文件夹中存在的所有匹配.coffee的文件:findtest-name"*Test.coffee"|egrep'/*serve

linux - 如何grep特定列中值小于0.2的行?

IDRTEZZ0Z1Z2RHOPHE1889UNNA1.00000.00000.00000.8765-11890UNNA1.00000.00000.00000.4567-11891UNNA1.00000.00000.00000.0012-11892UNNA1.00000.00000.00000.1011-1我想grep列“RHO”的值小于0.2的所有ID,而其他列包含在所选行中。 最佳答案 使用awk直接说awk'$field:$awk'$7作为RHO是列7,它会检查该字段。如果您只想打印特定列,请说awk'$field.对于ID:

linux - grep 如何知道它正在写入输入文件?

如果我尝试将grep的输出重定向到它正在读取的同一文件,如下所示:$grepstufffile.txt>file.txt我收到错误消息grep:inputfile'file.txt'isalsotheoutput。grep如何确定这一点? 最佳答案 根据GNUgrep源代码,grep检查输入和输出的i-nodes:if(!out_quiet&&list_files==0&&1通过针对STDOUT_FILENO调用fstat来填充out_stat。if(fstat(STDOUT_FILENO,&tmp_stat)==0&&S_ISRE

linux - 'grep -q' 不以 'tail -f' 退出

我正在尝试实现一个脚本来等待日志文件中的特定消息。记录消息后,我想继续脚本。这是我使用tail-f和grep-q进行的尝试:#tail-flogfile|grep-q'Messagetocontinue'grep永远不会退出,因此即使在文件中记录了“继续消息”,它也会永远等待。当我在没有-f的情况下运行它时,它似乎工作正常。 最佳答案 tail-f将读取文件并显示稍后添加的行,它不会终止(除非发送像SIGTERM的信号)。grep不是这里的阻塞部分,tail-f是。grep将从管道中读取数据直到它关闭,但它永远不会是因为tail-f

linux - Grep:使用排除特定文件夹

假设我们的文件夹结构如下所示:/app/app/data.../app/secondary/app/secondary/data我想递归搜索/app/data,但我不想搜索/app/secondary/data。在app文件夹中,我的grep命令会是什么样子? 最佳答案 这样就可以了grep-r--exclude-dir='secondary/data'PATTERNdata 关于linux-Grep:使用排除特定文件夹,我们在StackOverflow上找到一个类似的问题: