草庐IT

regex - 在 bash 中使用 SED 打印 RegEx 匹配项

我有一个XML文件,该文件由一行组成。我想做的是通过Putty从文件中提取“finalNumber”属性值。而不是必须下载副本并使用Notepad++进行搜索。我建立了一个正则表达式,并在On-lineTool上测试过,并尝试在sed命令中使用它duplicategrepfunctionality.该命令运行但不返回任何内容。正则表达式:(?sed命令(不返回任何内容,预期为28,请参阅文件提取):sed-n'/(?文件提取:...argo:finalizedDate="2012-02-09T00:00:00.000Z"argo:finalNumber="28"argo:revenue

linux - 如何使这个 sed 脚本更快?

我继承了这个试图删除某些空格的sed脚本片段:s/[\s\t]*|/|/gs/|[\s\t]*/|/gs/[\s]*$//gs/^|/null|/g对大约1Gb大的文件进行操作。这个脚本在我们的unix服务器上运行了2小时。任何想法如何加快它?请注意,\s代表一个空格,\t代表一个制表符,实际脚本使用实际的空格和制表符而不是那些符号输入文件是一个竖线分隔的文件,位于本地而不是网络上。这4行在用sed-f执行的文件中 最佳答案 我能用sed做的最好的事情是这个脚本:s/[\s\t]*|[\s\t]*/|/gs/[\s\t]*$//s/

linux - 如何使这个 sed 脚本更快?

我继承了这个试图删除某些空格的sed脚本片段:s/[\s\t]*|/|/gs/|[\s\t]*/|/gs/[\s]*$//gs/^|/null|/g对大约1Gb大的文件进行操作。这个脚本在我们的unix服务器上运行了2小时。任何想法如何加快它?请注意,\s代表一个空格,\t代表一个制表符,实际脚本使用实际的空格和制表符而不是那些符号输入文件是一个竖线分隔的文件,位于本地而不是网络上。这4行在用sed-f执行的文件中 最佳答案 我能用sed做的最好的事情是这个脚本:s/[\s\t]*|[\s\t]*/|/gs/[\s\t]*$//s/

linux - 用双引号括起来的双反斜杠替换正斜杠

我拼命尝试用双引号括起的双反斜杠("\\")替换正斜杠(/)但是a=`echo"$var"|sed's/^\///'|sed's/\//\"\\\\\"/g'`不工作,我不知道为什么。它总是替换为一个反斜杠而不是两个 最佳答案 当/是您想要用sed的s(替换)命令替换的正则表达式的一部分时,您可以使用命令语法中的另一个字符而不是斜杠,因此您可以这样写:sed's,/,\\\\,g'上面的,被用来代替通常的斜杠来分隔s命令的两个参数:描述要替换的部分的正则表达式和要用作的字符串替换。以上将用两个反斜杠替换每个斜杠。反斜杠是一个特殊的(

linux - 用双引号括起来的双反斜杠替换正斜杠

我拼命尝试用双引号括起的双反斜杠("\\")替换正斜杠(/)但是a=`echo"$var"|sed's/^\///'|sed's/\//\"\\\\\"/g'`不工作,我不知道为什么。它总是替换为一个反斜杠而不是两个 最佳答案 当/是您想要用sed的s(替换)命令替换的正则表达式的一部分时,您可以使用命令语法中的另一个字符而不是斜杠,因此您可以这样写:sed's,/,\\\\,g'上面的,被用来代替通常的斜杠来分隔s命令的两个参数:描述要替换的部分的正则表达式和要用作的字符串替换。以上将用两个反斜杠替换每个斜杠。反斜杠是一个特殊的(

linux - 基于多种模式重命名文件的更好方法

我下载的很多文件的文件名中都有废话/垃圾邮件,例如[www.crap.com]file.name.extwww.crap.com-file.name.ext我想出了两种处理它们的方法,但它们看起来都很笨拙:带参数扩展:if[[${base_name}!=${base_name//\[+([^\]])\]}]]thenmv-v"${dir_name}/${base_name}""${dir_name}/${base_name//\[+([^\]])\]}"&&base_name="${base_name//\[+([^\]])\]}"fiif[[${base_name}!=${base_

linux - 基于多种模式重命名文件的更好方法

我下载的很多文件的文件名中都有废话/垃圾邮件,例如[www.crap.com]file.name.extwww.crap.com-file.name.ext我想出了两种处理它们的方法,但它们看起来都很笨拙:带参数扩展:if[[${base_name}!=${base_name//\[+([^\]])\]}]]thenmv-v"${dir_name}/${base_name}""${dir_name}/${base_name//\[+([^\]])\]}"&&base_name="${base_name//\[+([^\]])\]}"fiif[[${base_name}!=${base_

linux - 删除不包含特定字符串的文件

我想找到不包含特定字符串的文件(在目录及其子目录中)并删除这些文件。我该怎么做? 最佳答案 以下将起作用:find.-typef-print0|xargs--nullgrep-Z-L'mystring'|xargs--nullrm这将首先使用find打印当前目录和任何子目录中的所有文件的名称。这些名称使用空终止符而不是通常的换行符打印(尝试将输出通过管道传输到od-c以查看-print0参数的效果。然后xargs的--null参数告诉它接受以null结尾的输入。xargs然后将在文件名列表上调用grep。grep的-Z参数与find

linux - 删除不包含特定字符串的文件

我想找到不包含特定字符串的文件(在目录及其子目录中)并删除这些文件。我该怎么做? 最佳答案 以下将起作用:find.-typef-print0|xargs--nullgrep-Z-L'mystring'|xargs--nullrm这将首先使用find打印当前目录和任何子目录中的所有文件的名称。这些名称使用空终止符而不是通常的换行符打印(尝试将输出通过管道传输到od-c以查看-print0参数的效果。然后xargs的--null参数告诉它接受以null结尾的输入。xargs然后将在文件名列表上调用grep。grep的-Z参数与find

awk - 如何使用 grep/awk/sed 打印特定模式(不包括模式本身)之前的所有字符?

例如echo"abc-1234a:"|grep只打印abc-1234a 最佳答案 我认为这些更接近您的目标,但在不知道您真正想要实现的目标的情况下,很难说。echo"abc-1234a:"|egrep-o'^[^:]+'...虽然这也将匹配没有冒号的行。如果您只需要带冒号的行,并且您必须仅使用grep,这可能有效:echo"abc-1234a:"|grep:|egrep-o'^[^:]+'当然,只有当您的echo"abc-1234a:"是一个可能被多行输入替换的示例时,这才有意义。您可以使用的最小工具可能是cut:echo"abc-