Tag: sed

如何使用sed删除文件的最后n行

我想从文件末尾删除一些n行。 这可以使用sed完成吗? 例如,要删除2到4行,我可以使用 $ sed '2,4d' file 但是我不知道行号。 我可以删除最后一行使用 $sed $d file 但我想知道从最后删除n行的方法。 请让我知道如何使用sed或其他方法做到这一点。

如何使用sed,awk或gawk打印只匹配的内容?

我看到很多关于如何使用sed,awk或gawk进行search和replace的示例和手册页。 但就我而言,我有一个正则expression式,我想运行一个文本文件来提取一个特定的值。 我不想做search和replace。 这是从bash调用。 我们用一个例子: 示例正则expression式: .*abc([0-9]+)xyz.* input文件示例: a b c abc12345xyz a b c 这听起来很简单,我不知道如何正确调用sed / awk / gawk。 我希望做的是从我的bash脚本里面得到: myvalue=$( sed <…something…> input.txt ) 我尝试过的东西包括: sed -e 's/.*([0-9]).*/\\1/g' example.txt # extracts the entire input file sed -n 's/.*([0-9]).*/\\1/g' example.txt # extracts nothing

从另一个文件中出现的文件中删除行

我有一个大的文件A (由电子邮件组成),每个邮件一行。 我还有另外一个包含另一组邮件的文件B. 我将使用哪个命令从文件A中删除出现在文件B中的所有地址 所以,如果文件A包含: A B C 和文件B包含: BD E 然后文件A应该留下: A C 现在我知道这是一个可能经常被问到的问题,但是我只在网上find一个命令 ,给了我一个错误的分隔符。 任何帮助将非常感激! 有人肯定会提出一个聪明的一行,但我不是壳牌专家。

保留行结束

我运行sed在Windows上进行一些replace,我注意到它会自动将行结束符转换为Unix(\ n)。 是否有一个选项告诉sed使用Windows行尾(\ r \ n),或者甚至更好地保留文件的行尾? 注意:我使用sed从unxutils: http ://unxutils.sourceforge.net/

sed全字search和replace

如何使用sedsearch和replace整个单词? 干 sed -i 's/[oldtext]/[newtext]/g' <file> 也会取代我不想做的[oldtext]部分匹配。

Shell脚本 – 从variables中删除第一个和最后一个引号(“)

下面是一个更大的脚本的shell脚本的片段。 它从由variables持有的string中删除引号。 我正在使用sed,这是否有效? 如果不是那么有效的方法是什么? #!/bin/sh opt="\"html\\test\\\"" temp=`echo $opt | sed 's/.\(.*\)/\1/' | sed 's/\(.*\)./\1/'` echo $temp

无效的命令代码,尽pipe逃脱了,使用sed

被迫为当前客户端使用CVS,并且远程仓库的地址被更改。 我可以find更改我的本地代码中的远程地址的唯一方法是recursionsearch和replace。 但是,我希望使用sed命令: find ./ -type f -exec sed -i "s/192.168.20.1/new.domain.com/" {} \; 我得到每个文件的错误: sed: 1: ".//file/path …": invalid command code . 我试图摆脱sed比赛/replace期间,但是这并没有解决任何问题。

如何用sed一次replace多个模式?

假设我有'abbc'string,我想replace: ab – > bc bc – > ab 如果我尝试两次replace结果是不是我想要的: echo 'abbc' | sed 's/ab/bc/g;s/bc/ab/g' abab 那么我可以使用什么种子命令来replace如下? echo abbc | sed SED_COMMAND bcab 编辑 :其实文本可能有超过2个模式,我不知道我需要多lessreplace。 由于有一个答案,说sed是一个stream编辑器,它的replace是贪婪的,我认为我将需要使用一些脚本语言。

从文件中删除所有以#开头的行

所有带有注释的行都以#开头。 我怎样才能删除所有以#开头的行(并且只有这些行)? 包含#其他行,但不在行首,应该被忽略。

更改多个文件

以下命令正确更改2个文件的内容。 sed -i 's/abc/xyz/g' xaa1 xab1 但我需要做的是dynamic地改变几个这样的文件,我不知道文件名。 我想写一个命令,将从当前目录中读取所有文件从xa*开始, sed应该改变文件内容。