Articles of sed

awk / sed:在特定块号的最后一行之前插入文件内容

给定是两个文件,第一个是Apacheconfiguration文件: $ cat vhosts-ssl.conf <VirtualHost *:443> vhost 1 foobar 1 foobar 2 barfoo 1 barfoo 2 </VirtualHost> <VirtualHost *:443> vhost 2 foobar 2 barfoo 1 foobar 1 barfoo 2 </VirtualHost> <VirtualHost *:443> vhost 3 foobar 1 barfoo 1 foobar 2 barfoo 2 </VirtualHost> <VirtualHost *:443> vhost 4 foobar 1 foobar 2 barfoo 1 barfoo 2 […]

转义sedreplacestring中的换行符

这里是我尝试在运行bash用sedreplace一个换行符 $> echo 'abc' | sed 's/b/\n/' anc 不,不是的 $> echo 'abc' | sed 's/b/\\n/' a\nc 不,那也不是。 我想要的输出是 a c 帮帮我!

如何删除与模式匹配的行和使用sed后面的行?

我有一个如下所示的文件: good text good text FLAG bad text bad text good text good text good test bad Text FLAG bad text bad text good text 我需要删除任何包含“FLAG”的行, 而且我总是需要在“FLAG”行之后立即删除这一行。 “旗”线来不规则,我不能依赖任何行号策略。 任何人都知道如何用sed做到这一点?

在某种模式之前添加文本时使用sed和忽略大小写

sed -i '/first/i This line to be added' 在这种情况下,如何在searchpattern = first的时候忽略case

sed与特殊字符

我有我想要使用sed的这一行: –> ASD = $start ( *.cpp ) <– $ start不是可变的,我想用sed来代替所有的行: ASD = $dsadad ( .cpp ) 我怎样才能使sed忽略特殊的charactars,我试图在特殊字符之前加斜杠,但也许我错了,有人可以给我一个例子吗? 这是我想要的: sed's / CPPS = \ $(shell ls | grep * .cpp)/ somereplace /'Makefile

如何在linux中设置sed命令的临时文件目录?

我有这样修改文件的bash脚本 sed -i "/hello world/d" /etc/postfix/virtual 我从web应用程序运行这个脚本。 sed命令在该目录中创build临时文件,但在其下运行的Web应用程序的用户无权在该目录中创build文件。 我不想给该文件夹的用户更多的权限。 是否有可能为sed命令指定临时文件位置? 我是在Linux新,所以很抱歉,如果我的问题太容易,但我没有find任何解决scheme。 谢谢!

为什么sed会留下许多文件?

我注意到我的目录中有很多文件,叫做“sedAbCdEf”或类似的东西。 为什么会创build这些文件? 脚本运行后,这些脚本是否有价值? 我可以将这些文件发送到另一个位置,例如/tmp/ ? 更新: 我检查了脚本,直到find一个制作文件的脚本。 这是一些示例代码: #!/bin/bash a=1 b=`wc -l < ./file1.txt` while [ $a -le $b ]; do for i in `sed -n "$a"p ./file1.txt`; do for j in `sed -n "$a"p ./file2.txt`; do sed -i "s/$i/\nZZ$jZZ\n/g" ./file3.txt c=`grep -c $j file3.txt` if [ "$c" -ge 1 ] then echo $j >> […]

使用? 与sed

我只是想得到一个文件的数量,可以或不可以gzip'd。 然而,似乎sed中的正则expression式不支持? 。 这是我的尝试: echo 'file_1.gz'|sed -n 's/.*_\(.*\)\(\.gz\)?/\1/p' 并没有返回。 那我加了一个? 到被分析的string: echo 'file_1.gz?'|sed -n 's/.*_\(.*\)\(\.gz\)?/\1/p' 并得到: 1 那么,它看起来像? 在大多数正则expression式中使用不支持在sed,对不对? 那么,我只想sed给1 file_1和file_1.gz 。 如果执行时间很关键,那么在bash脚本中如何做到这一点呢?

用grepparsingstring

我需要一些在Linux中parsingstring的帮助。 我有一个string: [INFO] Total time: 2 minutes 8 seconds 只想得到 2 minutes 8 seconds

Bash:将键值行转换为CSV格式

编者按:我已经澄清了问题的定义,因为我觉得这个问题很有意思,这个问题值得重新打开。 我有一个文本文件,其中包含以下格式的键值行 – 请注意,下面的#行仅用于显示重复块,不是input的一部分 : Country:United Kingdom Language:English Capital city:London # Country:France Language:French Capital city:Paris # Country:Germany Language:German Capital city:Berlin # Country:Italy Language:Italian Capital city:Rome # Country:Russia Language:Russian Capital city:Moscow 使用shell命令和实用程序,我怎样才能将这样的文件转换为CSV格式,所以它看起来像这样? Country,Language,Capital city United Kingdom,English,London France,French,Paris Germany,German,Berlin Italy,Italian,Rome Russia,Russian,Moscow 换一种说法: 将键名称设置为CSV标题行的列名称。 使每个块的值分别为数据行。 编辑:我的想法是将条目分开,例如:国家:法国将成为国家法国,然后grep / sed标题。 但是,我不知道如何将标题从一个列移动到几个单独的列。