我在bash脚本中有以下sed扩展正则表达式替换:sed-i.bak-E's~^[[:blank:]]*\\iftoggle{[[:alnum:]_]+}{\\input{([[:alnum:]_\/]+)}}{}~\\input{\1}~'file.txt应该替换像这样的字符串\iftoggle{xx_yy}{\input{xx_yy/zz}}{}与\input{xx_yy/zz}在file.txt中。在OSX上,这在本地工作得很好,但脚本需要是POSIX。具体来说,它在我的远程TravisCI构建(使用Linux)上失败了。虽然sed-E没有针对GNUsed的文档,但它的行为就像s
我想插入这个block:hostclient3{hardwareethernetc0:03:03:bc:30:fa;}在此block之后:subnet11.10.0.0netmask255.255.255.0{range11.10.1.211.10.1.254;group{filename"10M-5M-OKS2016NOV.cm";行:filename"10M-5M-OKS2016NOV.cm";在文件中多次出现。但只有一次在subnet11.10.0.0netmask255.255.255.0{直到现在我可以打印子网block直到“文件名”:sed-n-e:a-e'/subnet1
我知道在Linux中文件扩展名是什么并不重要,但是命名sed脚本的约定是什么?我见过.sh、.sed、.sd 最佳答案 当文件包含shell命令时使用.sh;当.sed只有Sed命令并由sed-f加载时使用.sed。例如,以下将被称为script.sh:#!/bin/shsed's/foo/bar/g'虽然这将是script.sed:s/foo/bar/gVim等编辑器会根据.sh和.sed给你适当的高亮。 关于linux-约定命名sed脚本?,我们在StackOverflow上找到一个
假设我们有以下数据B346879length:12B34L677B111879length:32B33L677B545879length:34B34L677B344879length:98B33L677B090879length:45B33L677我正在寻找“B34”,所以我想从这个系列中打印第一行和第三行。但是如果我会使用:catt.txt|sed-n'/B34/p'|awk'{print$1","$4""$5}'|sed's/B//g'第4行也将被打印,因为“B34”匹配“B344879”的前3个字符。我知道使用sed's/pattern/replacement/n'之类的东西,您
我有一个130GB的大文件。#ls-lrth-rw-------.1rootroot129GApr2004:25syslog.log所以我需要通过删除以“Nov2”开头的行来减小文件大小,所以我给出了以下命令,sed-i'/Nov2/d'syslog.log所以我也不能使用VIM编辑器编辑文件。当我触发SED命令时,它也会创建备份文件。但是我的根目录没有太多空间。请尝试提供替代解决方案以从该文件中删除特定行而不增加服务器空间。 最佳答案 它不会创建真正的备份文件。sed是一个流编辑器。当应用于带有选项-i的文件时,它将通过sed进程
我正在使用以下sed命令来查找和替换字符串:finddir-name'*.xml'-execsed-i-e's/text1/text2/g'{}\;这会更改dir中所有.xml文件的时间戳但是,我怎样才能保留旧的时间戳?谢谢 最佳答案 使用stat和touchfinddir-name'*.xml'-execbash-c't=$(stat-c%y"$0");sed-i-e"s/text1/text2/g""$0";touch-d"$t""$0"'{}\;使用cp和touchfinddir-name'*.xml'-execbash-c'
我以下面的字符串为例:前任。“废弃161.102.623.50”我想将此结果通过管道传输到sed并删除所有十进制数字,以便留下以下内容:前任。《弃16》我正在使用以下命令:sed's/.//g'这显然不起作用。谁能告诉我如何在sed中使用通配符来删除任何匹配“.”的内容。谢谢 最佳答案 你还没有说你想用空格做什么,但是怎么样sed-e's/[0-9]*\.[0-9]*//g'-e's/*$//' 关于linux-如何使用sed从字符串中删除小数?,我们在StackOverflow上找到一
非常简单,我有一个在每个换行符处都有\r\n的文件。aaaa\r\nbbbb\r\ncccc我想在保留\n的同时删除\r字符。我可以在python中轻松完成此操作,但使用简单的sed命令似乎更优雅。这可能吗?什么表情可以解决问题?我似乎无法在网上找到任何此类解决方案。谢谢 最佳答案 你应该可以像这样使用sed来做到这一点:sed's/\r//g'orig.txt>modified.txt 关于regex-如何用sed删除\r字符,我们在StackOverflow上找到一个类似的问题:
使用bash,我试图为日期插入一个变量并搜索该日期的日志文件,然后将输出发送到一个文件。如果我像这样硬编码日期,它就可以工作:sed-n'/Nov22,2010/,$p'$file>$log_file但是如果我这样做它会失败:date="Nov22,2010"sed-n'/$date/,$p'$file>$log_file我得到的错误是:sed:1:"/Nov22,2010/,":expectedcontextaddress感谢您的帮助。 最佳答案 在shell脚本中,单引号和双引号是有区别的。单引号内的变量不展开(与双引号内的变量
我有一些看起来像这样的数据。它有四个大块。每个block都以@字符开头。@SRR037212.1FC30L5TAA_102708:7:1:741:1355length=27AAAAAAAAAAAAAAAAAAAAAAAAAAA+SRR037212.1FC30L5TAA_102708:7:1:741:1355length=27::::::::::::::::::::::::;;8@SRR037212.2FC30L5TAA_102708:7:1:1045:1765length=27TATAACCAGAAAGTTACAAGTAAACAC+SRR037212.2FC30L5TAA_102708