我有一个文件,它有一个永远不会重复的特定字符串,我的所有数据都从这个字符串开始。我的要求是读取此字符串下的所有数据(比如[string-start])并将读取的数据重定向到另一个文件中。
答案 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}无法解析。
请建议!!!