Questions tagged «sed»

sed是用于过滤和转换文本的命令行流编辑器。

4
替换包含换行符的字符串
使用bash外壳程序,在具有以下行的文件中 first "line" <second>line and so on 我想更换的一次或多次出现"line"\n<second>用other characters,并获得每一次: first other characters line and so on 因此,我必须用特殊字符(例如"和)<和换行符来替换字符串。 在其他答案之间进行搜索之后,我发现该命令sed可以在命令的右侧(因此other characters字符串)接受换行符,但不能接受左侧的换行符。 有没有一种方法(比this更简单)使用sed或获得此结果grep?


2
如何对文件进行就地修改?
对文件的“原位”修改(例如,通过sed -i或perl -i表示)是什么? 我的问题是有关此就地修改是如何完成的。复制的文件是否在副本中完成修改,然后替换原始文件?还是以某种方式修改了原始文件?
10 files  sed  perl 

4
仅删除双引号中出现的逗号
在文本文件中,我要删除,(逗号)以及"(引号)(仅当双引号包含以逗号分隔的数字时)。 56,72,"12,34,54",x,y,"foo,a,b,bar" 预期产量 56,72,123454,x,y,"foo,a,b,bar" 注意:我仅以示例的方式显示上述行。我的文本文件包含很多行,如上,双引号中用逗号分隔的数字应有所不同。那是, 56,72,"12,34,54",x,y,"foo,a,b,bar" 56,92,"12,34",x,y,"foo,a,b,bar" 56,72,"12,34,54,78,76,54,67",x,y,"foo,a,b,bar" 56,72,x,y,"foo,a,b,bar","12,34,54" 56,72,x,y,"foo,a,b,bar","12,34,54","45,57,84,92","bar,foo" 预期产量: 56,72,123454,x,y,"foo,a,b,bar" 56,92,1234,x,y,"foo,a,b,bar" 56,72,12345478765467,x,y,"foo,a,b,bar" 56,72,x,y,"foo,a,b,bar",123454 56,72,x,y,"foo,a,b,bar",123454,45578492,"bar,foo" n在双引号中有许多数字,用逗号分隔。并且还要保留包含字符的双引号。 我喜欢sed文字处理工具。如果您sed对此提出任何解决方案,我感到很高兴。

6
bash查找以字符串开头的行
我有一堆文件,我想找到其中一个包含以某个字符串开头的连续行的文件。 例如以下文件: Aaaaaaaaaaaa Baaaaaaaaaaa Cxxxxxxxxx Cyyyyyyyyy Czzzzzzzzz Abbbbbbbbbbb Bbbbbbbbbbbb Caaaaaa Accccccccccc Bccccccccccc Cdddddd Ceeeeee 有多个以'C'开头的行,因此我希望通过命令找到该文件。 例如以下文件: Aaaaaaaaaaaa Baaaaaaaaaaa Cxxxxxxxxx Abbbbbbbbbbb Bbbbbbbbbbbb Caaaaaa Accccccccccc Bccccccccccc Cdddddd 总会有一行以'C'开头,我不要这个文件。我想到使用a grep或a,sed但我不知道该怎么做。也许使用正则表达式^C.*$^C或类似的东西。任何的想法 ?
10 bash  sed  grep  string 

2
为什么默认情况下不使用扩展正则表达式模式进行sed?
我正在使用sed。据我所知,我使用的正则表达式是正确的,但是sed并没有做任何事情。原来,我使用的是\s+哪个sed无法理解,并且当我切换到[ ]+它时起作用。 综上所述,我做了一个正则表达式,要使其正常工作,我必须转义几乎所有内容并删除\s空白。似乎有一种避免所有这些情况的模式,-r所以我想问一下: 为什么不-r设置sed的默认模式?为什么我不得不费很大的劲才能逃脱一切? man表示存在该选项--posix,并且“应该支持POSIX.2 BRE”是什么意思?NFA / DFA模式?

3
删除两个特定字符串之间的文本
我有一个如下文件: mime PI Name: ISHO SUCCESS RATE RT, Value: 95.663826 scr PI Name: RRC Access Failures due to UU, Value: 0.13394141 prog PI Name: RRC Access Failures due to UU, Value: 0.16077702 sch PI Name: RRC Access Failures due to UU, Value: 0.11781933 我要删除文本PI直到Value:。我试过了 sed '/<PI>/,/<\/Value:>/d' 有什么帮助吗?

6
正则表达式如何从文件中取出多行?
正则表达式如何从文件中取出多行? 我经常想通过正则表达式获得多行/修改多行。一个例子: 我正在尝试读取XML / SGML文件的一部分(它们不一定格式正确或语法可预测,因此正则表达式比适当的解析器更安全。此外,我希望能够完全做到这一点在外壳脚本(在Solaris和Linux上运行)中仅知道一些关键词的非结构化文件。 XML示例: <tag1> <tag2>bar</tag2> </tag1> <tag1> <tag2>foo</tag2> </tag1> 从这里,我想阅读<tag1>如果其中包含foo某处。 像一个正则表达式(<tag1>.*?foo.*?</tag1>)应该给予正确的部分,但是等工具grep,并sed只为我的单线条的工作。我怎样才能得到 <tag1> <tag2>foo</tag2> </tag1> 在这个例子中?
10 shell  sed  grep 

3
如何从第5行开始删除空白行
我有这个: sed -i '/^$/d' temp_spec.rb 这将删除空白行,并且效果很好。我如何才能仅对5-999行执行此操作(最好是在文件末尾添加5行)。 我试过了: sed -n5,999 -i '/^$/d' temp_spec.rb sed '5,999!d/^$/d' temp_spec.rb 但均无效(无错误)。
10 sed 

4
如何编写sed单线在每第三个字符后添加一个字符?
所以,我有一个看起来像这样的字符串: AUGGCCAUGGCGCCCAGAACUGAGAUCAAUAGUACCCGUAUUAACGGGUGA 我想将字符串分成3个字符的块,并用'+'号分隔。 AUG+GCC+AUG+GCG+CCC+AGA+ACU+GAG+AUC+AAU+AGU+ACC+CGU+AUU+AAC+GGG+UGA 我想和我的好朋友做到这一点sed。 我试过了 cat codons | sed -r 's/([A-Z]\{3\})/\1\+/g' ...没有成功。 我sed可以使用什么命令?

3
使用here-doc处理sed和文件
我想对sed命令使用here-doc,并提供要读取的文件和输出文件。 我看过Advanced Bash Scripting指南中的Here-Documents,但是在使用Here -doc时没有提及任何有关常规参数的内容。可能吗 我想要实现以下目标: #!/bin/bash OUT=/tmp/outfile.txt IN=/my_in_file.txt sed $IN << SED_SCRIPT s/a/1/g s/test/full/g SED_SCRIPT > $OUT; 任何帮助都非常感谢。

5
Sed:每隔两行换行是否替换模式?
有没有办法告诉sed每秒钟发生一次替换模式?还是至少每隔两行?(当然可以使用脚本,但是我问自己是否sed可以这样做)。 编辑 我发现 sed -e "s/pattern/replacement/g;n" 但是它取代了第一次出现的情况,而不是第二次出现的情况。 例 输入文件: I have a pattern in each line Also the second line has the pattern Another pattern here And -- you guess it -- a pattern 所需的输出: I have a pattern in each line Also the second line has the replacement Another …
10 sed  replace 

4
在UNIX中删除超过5天的文件(文件名中的日期,而不是时间戳)
我想从目录中删除超过5天的日志文件。但是删除不应该基于文件的时间戳。它应该基于文件名。对于今天的例子日期是07月05日和目录包含类似名称的10个文件ABC_20120430.log,ABC_20120429.log,ABC_20120502.log,ABC_20120320.log等我希望能够通过提取从文件的名称日期以删除这些文件。
10 bash  sed  rm 

3
将字符串替换为非常大的文件
我有一连串的网址,没有分隔符,格式如下: http://example.comhttp://example.nethttp://example.orghttp://etc... 我希望每个URL都换一行。我试图通过使用sed将“ http://”的所有实例替换为“ \ nhttp://”来做到这一点 sed 's_http://_\nhttp://_g' urls.txt 但是发生分段错误(内存冲突)。我只能推测文件的绝对大小(超过100GB)导致sed超过了一些限制。 我可以将文件分成几个较小的文件进行处理,但是“ http://”的所有实例都需要保持完整。 有一个更好的方法吗?


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.