如何使用unix读取以特定字符串开头的文件

时间:2014-09-02 02:08:18

标签: unix

我有一个文件,它有一个永远不会重复的特定字符串,我的所有数据都从这个字符串开始。我的要求是读取此字符串下的所有数据(比如[string-start])并将读取的数据重定向到另一个文件中。

3 个答案:

答案 0 :(得分:0)

使用sed在一行中很容易实现。

sed -ne 'H;1h;${g;s/.*string-start//;p}' input.txt > output.txt

这是分解。

  • -ne以安静模式运行以下脚本。
  • h/H - 复制/追加模式空间以容纳空间,H将追加\ n以先占用空间。
  • H;1h - 仅用于复制所有文本以保留空格,1匹配第一行。
  • s/.../.../ - 用于将string-start之前的文本替换为空,这意味着将其删除。
  • p - 打印当前的模式空间。
  • ${...} - 匹配最后一行。

例如,input.txt如下。

abc
def
ghistring-startjkl
mno
pqr

output.txt如下。

jkl
mno
pqr

答案 1 :(得分:0)

@Krishna Kanth:这个命令可能会有所帮助。试试吧:

sed -e 's/^.*\(search-string\)/\1/' input-file > output-file

答案 2 :(得分:0)

@Landys:

我尝试使用下面的命令,但发现同样的解析错误。

$ sed -ne' H; 1h; $ {g; s /.* \ START-OF-DATA // g; p}' < file.txt> file.out

sed:0602-404函数H; 1h; $ {g; s /.* \ START-OF-DATA // g; p}无法解析。

请建议!!!