我使用sed脚本在文件中找到的关键字"MYWORD“之前插入一行。我的脚本如下:
sed -e '/MYWORD/ i\MY NEW LINE TO BE INSERTED' <inputFilename >outputFilename
由于这只会发生在一个文件上,如何更改我的脚本才能使此插入发生在目录中的每个文件上?
我在班上被布置了一些作业,离完成作业只有一步之遥。我绞尽脑汁试图想出一个解决方案,但什么都没有奏效,以至于我即将放弃。
基本上,在我得到的文件中...我应该替换这个:
<b>Some text here...each bold tag has different content...</b>
使用
Some text here...each bold tag has different content...
我已经部分完成了,但是我不知道如何使用sed (regexp)“回显”提取的内容。
我设法将内容替换出来很好,但是当我试图实际输出HTML标记之间的内容时,它就出错
我一个旧的简短的shell脚本,激发了我的兴趣:
cd ~/RCS
for f in .*,v
do printf '%3d %s\n' \
$(rlog -h $f | sed '/total revisions: /!d;s///') \
$f
done | sort -nr
查看sed脚本,我注意到空的s语句:s///。我看了一下,没有看到上面提到的。
我的猜测是,空正则表达式与模式(即"total revisions:")匹配,匹配,然后替换为nothing,即删除它。这就是发生的事吗?这是sed脚本的常见成语吗?如果是的话,我
如何在每个后面跟着字母Q和一个整数的整数处换行?
例如:
echo "Lorem ipsum Que Q94 dolor sit amet, Q3004 consectetur adipiscing
elit. Q1 Idcirco enim non desideraret" | sed -e $'s/Q\([0-9]\)/\\\nQ\1/g'
生成以下不正确的结果:
Lorem ipsum Que
Q4 dolor sit amet,
Q004 consectetur adipiscing elit.
Q Idcirco enim non des
在我的脚本中,我正在从dmesg系统日志中传输一行。在某些发行版上,每行前面也记录有时间戳的行。
以这个输出为例:
[ 12.291091] BTRFS info (device sda2): disk space caching is enabled
在某些发行版上会出现[]时间戳,而在另一些发行版上则只显示:
BTRFS info (device sda2): disk space caching is enabled
谁能让我知道一个快速的方法来处理删除的时间部分,并显示这一行没有它?我的棘手之处在于,在某些发行版上,它并不存在,所以我不知道该如何处理。谢谢!
在MacOSX10.6.8上使用Sed创建一个文本编辑器的.command文件,该文件将在Geektool中执行。我有一个字符串MYSTRING,并尝试删除其中的链接标记。但是在使用通配符时,Sed似乎选择了一个太长的范围。
MYSTRING="<link>part_1</link>This part must remain.<link>part_x</link> Like this part."
echo $MYSTRING |
sed s/"<link>".*"<\/link>&
我的sed调用似乎都没有在文档上激活。我已经反复检查了正则表达式,它在我可用的所有文本编辑器(Geany,Gedit,Notepad ++)中都能正常工作,有人对我做错了什么有什么想法吗?
#!/bin/sh
clear
antiword q.doc > q.txt
sed -i -e's/\[.*\]//g' q.txt # replace [...] with nothing
sed -i -e's/^[ \t]+[o][ \t]//g' q.txt # replace old word UL with nothing
sed -i -e's/
我是GNU sed (运行在macOS上)的新手,我希望缩短一些文件头(~50K头,78.3Mb)。
我试图通过使用-i标志指定备份扩展名来修改FASTA文件。
到目前为止我已经
sed -i.bak 's/^([^|]+).[^|]+(.*)/\1\2/' file.fas
它应该创建一个名为file.fas.bak的新文件。
但是,我得到了一个错误
sed: 1: "s/^([^|]+).[^|]+(.*)/\1\2/": \1 not defined in the RE
注意,sed -re 's/^([^|]+).[^|]+(.*)/\1\2/
我以为+和*都是贪婪的。为什么+在这个上下文中似乎不匹配,但是*是否匹配?
$ cat test
a
$ sed -i 's/^[ \t]+//g' test
$ cat test
a
$ sed -i 's/^[ \t]*//g' test
$ cat test
a
这些只是a之前的空格(不是制表符),但是单独的制表符,或者两者的混合,会导致相同的结果。
这是在sed (GNU sed) 4.2.2上。
我有一个包含以下行的ascii文件(Report.dat):
a ./L1/file2.txt
c ./L1/file1.txt
b ./L2/file1.txt
a ./L2/file2.txt
我需要得到第一列是唯一的行,如下所示:
c ./L1/file1.txt
b ./L2/file1.txt
我如何使用AWK、sort或uniq命令来做到这一点?
我正在温习我的正则表达式,看看我能做些什么,同时也在其中缩小了我的标准编码风格。然后我写了一个小的代码片段,它应该可以工作,但是不能工作。所以我不断地将它简化为最基本的形式,但仍然没有做我想要做的事情:
echo "a" | sed -e 's/a+/A/g'
为什么它不输出
A
我只是不明白为什么这不起作用..。
String text = "This is a very tiny test!!!"
Pattern p = "this is a (.*) test.*"
Output o = "very tiny" (after search and replace)
我想用括号()中的内容替换这个模式,它用$1进行索引。在Linux上,有什么命令可以这样做,以及如何做到这一点?
我必须在命令行中这样做,因为我的文件是几GB的,不能在编辑器中完成。
我需要在QIIME中替换一个不正确的Illumina fasta头来进行格式化,而这个脚本并不完全像我想要的那样工作。我需要能够放入变量并使用unix的"s“命令。有什么想法吗?
print 'What is the exact sequence of characters to replace? ';
chomp (my $seq_char = <> );
print 'What is the new label to attach? ';
chomp (my $label = <> );
while( $seq = $seq
如何使用sed用空行替换只有#的行?
我试图在谷歌上找到,但我什么也没有得到。
文件内容:
#test
another test
#
another test2
预期结果:
#test
another test
another test2
因此,在预期的结果下,在另一次测试之后,行应该是空白的,而不是#。
任何帮助都是非常感谢的。