Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用unix读取以特定字符串开头的文件_Unix - Fatal编程技术网

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

如何使用unix读取以特定字符串开头的文件,unix,Unix,我有一个文件,其中有一个特定的字符串,它从不重复,我的所有数据都从这个字符串开始。我的要求是读取此字符串下的所有数据(例如[string start]),并将读取的数据重定向到另一个文件。在一行中使用sed很容易实现 sed -ne 'H;1h;${g;s/.*string-start//;p}' input.txt > output.txt 这是分解过程 -ne以安静模式运行以下脚本 h/h-复制/追加模式空间以保留空间,h将首先追加\n以保留空间 H;1h-仅用于复制所有文本以保留

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

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

sed -ne 'H;1h;${g;s/.*string-start//;p}' input.txt > output.txt
这是分解过程

  • -ne
    以安静模式运行以下脚本
  • h/h
    -复制/追加模式空间以保留空间,h将首先追加\n以保留空间
  • H;1h
    -仅用于复制所有文本以保留空格,1匹配第一行
  • s/../…/
    -用于将
    字符串开始之前的文本替换为空,这意味着将其删除
  • p
    -打印当前图案空间
  • ${…}
    -匹配最后一行
例如,
input.txt
如下所示

abc
def
ghistring-startjkl
mno
pqr
jkl
mno
pqr
output.txt
如下所示

abc
def
ghistring-startjkl
mno
pqr
jkl
mno
pqr

@克里希纳·坎特:这个命令可能会有帮助。试试看:

sed -e 's/^.*\(search-string\)/\1/' input-file > output-file
@兰迪斯:

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

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

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


请建议

你能举例说明文件的外观吗?如果你想在这里获得帮助,你需要举例说明你想查找的内容以及你迄今为止(在问题正文中)尝试过的内容。只要找到它就行了。似乎你自己的回答中的
@Landys
不会通知我。请尝试
sed-ne'H;1h${g;s/*START-OF-DATA//g;p}'file.txt>file.out
。请注意,
START-OF-DATA
前面没有“\”。在我的示例中,它用于转义
[
,我将简化它。