我需要从日志文件中获取值,值可能不同并且需要获取它。字符串示例:Testsrun:1042,Failures:0,Errors:0,Skipped:0我尝试:catlog.log|grep'^Testrun:'|sed-e's/^Testrun://'但我得到:1042,失败:0,错误:0,跳过:0我需要4个结果类似的命令第一个命令(测试运行)1042第二个命令(失败)0第三条命令(错误)0第四个逗号(跳过)0 最佳答案 您可以使用以下四个命令来获取Testsrun的值,Failures,Errors,和Skipped分别是:cat
我有一行文件:"H:\Check\WP_20140511_029.mp4"与其他行一起。我想删除指示H:\Check目录的行。我试过了grep-v".*H:\\Check.*"testout.txt>testout2.txt但它并没有删除那些行。我的正则表达式.*H:\\Check.*有什么问题。regex101shows我的正则表达式正确匹配该行。 最佳答案 您可以使用:grep-v'H:\\Check'testout.txt>testout2.txt使用单引号以避免过度转义反斜杠很重要。使用双引号等效命令将是这样的:grep-v
我正在编写一个shell脚本,我需要在其中使用当前操作系统名称才能使其通用。喜欢:if[$Operating_System=="CentOS"]thenecho"CentOS";#Dothiselif[$Operating_System=="Ubuntu"]thenecho"Ubuntu";#Dothatelseecho"UnsupportedOperatingSystem";fi这怎么可能?在lsb_release-a命令或其他命令上应用正则表达式?谢谢.. 最佳答案 $lsb_release-iDistributorID:Fed
我正在写这段代码:awk-F'=''!/^$/{arr[$1]=$2}END{for(xinarr){printx"="arr[x]}}'1.txt2.txt此代码忽略空行,但我也想忽略以#(注释)开头的行。知道如何添加多个模式吗? 最佳答案 将!/^$/改为!/^($|#)/或!/^($|[:space:]*#)/如果您想忽略#之前的空格。 关于regex-如何使用awk忽略空行和注释行,我们在StackOverflow上找到一个类似的问题: https:/
我想替换文件的倒数第二行,我知道$用于最后一行但不知道如何说第二行。parallel({ignore(FAILURE){build("Build2Test",BUILDFILE:"",WARFILE:"http://maven.example.com/130602.0.war",STUDY:"UK",BUG:"33323")}},)我想用}}替换}},简而言之我想删除,逗号但是这个文件有很多其他代码所以我不能使用模式匹配,我需要使用文件末尾的第二行。 最佳答案 以下应该有效(请注意,在某些系统上您可能需要删除所有评论):sed'1{
我想替换这个#!/usr/bin/envbash有了这个#!/bin/bash我尝试了两种方法方法一original_str="#!/usr/bin/envbash"replace_str="#!/bin/bash"seds~${original_str}~${replace_str}~filename方法二line=`grep-n"/usr/bin"filename`awkNR==${line}{sub("#!/usr/bin/envbash","#!/bin/bash")}但是他们两个都不行。 最佳答案 您不能在BASH的双引号
我在expect脚本中遇到了这个问题。我想在命令输出为“0”时捕获并与其他数字或链(如“000”或“100”)区分开来我的代码是:#!/usr/bin/expect-fsettimeout3spawnbashsend"echo0\n"expect{-regexp{^0$}{send_user"\nzero\n"}-re{\d+}{send_user"\number\n"}}send"exit\n"我有以下回应:spawnbashecho0number但是下面的正则表达式不起作用:-regexp{^0$}{send_user"\nzero\n"}如果我把它改成:-regexp{0}{se
我有以下布局:d1f1f2f3d2f4f5d3f6f7f8d4f9我想做的是重命名根目录以包含其中包含的(递归)文件数。只要不是太长,格式就不是特别重要。我希望能够每隔一小时左右将此脚本作为cron运行一次以更新目录名称,因此在第一次运行后它将如下所示:3-d1f1f2f32-d2f4f54-d3f6f7f8d4f9然后第二次运行后,可能又添加和删除了几个文件,现在看起来像这样:1-d1f14-d2f2f3f4f510-d3f6f7f8d4f9F10f11f12f13f14f15到目前为止,我有以下bash脚本,但我不知道如何对文件名进行正则表达式替换#!/bin/bashTARGET
我有一些脚本在不同域中有很多电子邮件地址(比如domain1.com,domain2.com。我想用一些通用电子邮件替换所有这些公共(public)域中的地址,比如domain.com,保持脚本的其余部分相同。我在sed中使用下面的代码,但它似乎不起作用。(它返回与输入相同的输出,所以看起来搜索不匹配。但是,当我在在线测试器中测试正则表达式\S+@\S+/时,它似乎与电子邮件地址匹配。)s/\S+@\S+/genericid@domain.com/g比如我有2个脚本$catscript1.shabcd.efg@domain.comexportSENDFROM="xyz@domain1.
我在Apache服务器上有一个目录(Linux/Unix),其中有很多子目录包含很多这样的文件:-Dir-2010_01/-142_78596_101_322.pdf-12_10.pdf-...-2010_02/-...Howcanifindallfileswithfilesnameslookinglike:*_*_*_*.pdf?where*isalwaysadigit!!Itrytosolveitlikethis:ls-1Rl2010-01|grep-i'\(\d)+[_](\d)+[_](\d)+[_](\d)+[.](pdf)$'|wc-l但是正则表达式\(\d)+[_](\d