sed 命令复制有字符串的行

sed command to copy lines that have strings

我想将包含字符串的行复制到另一个文件

例如

一个文件包含以下行

ram 100 50
gopal 200 40
ravi 50 40
krishna 300 600
Govind 100 34

我想通过跳过(一行中第一次出现的)100 或 200 之前的所有字符将具有 100 或 200 的行复制到另一个文件

我要复制 100 50 200 40 100 34 到另一个文件

我正在使用 sed -n '/100/p' 文件名 > 输出文件

你能帮我用一个命令添加任何一个字符串的行吗

至少有两种可能:

sed -n '/100\|200/p' filename > outputfile

sed -n -e '/100/p' -e '/200/p' filename > outputfile

后者可能更容易记住和维护(但也许你应该使用 -f?),但请注意,如果它们都匹配,它将打印两次。您可以使用以下方法解决此问题:

sed -n -e '/100/{p;b}' -e '/200/{p;b}' filename > outputfile

那么,你为什么要使用 sed?这听起来像是 grep.

的工作

sed方法:

sed '/[12]00/!d; s/[^0-9[:space:]]*//g; s/^ *//g;' filename > outputfile
  • /[12]00/!d - exclude/delete 所有不匹配 100200

  • 的行
  • s/[^0-9[:space:]]*//g - 删除除数字和空格以外的所有字符

outputfile内容:

100 50
200 40
100 34

这可能适合您 (GNU sed):

sed -n '/[12]00/w anotherFile' file

仅在需要时打印,将匹配 100200.

的正则表达式写入 anotherFile