我的文件格式如下
如何将文件剪切到以2号开头的行(不包括第2行)
在带有数字2的新行之前可以是空格或TAB,
备注 - 可以使用ksh或awk或sed或perl one liner等来实现
文件:
* 0
Any text
Any text
.
.
1
Any text
Any text
.
.
2
Any text
Any text
.
.
3
Any text
Any text
.
.
答案 0 :(得分:2)
您可以使用标志“播放”,该标志会在找到该行时停用:
awk 'BEGIN{f=1} /^2/{f=0} f' file
BEGIN{f=1}
将标志初始化为true。当一行以/^2/{f=0}
,2
开头时f
取消设置,当为真时,会打印该行。
要在某些空格后检查2
行,您可以执行以下操作:
awk 'BEGIN{f=1} /\s*2/{f=0} f' file
答案 1 :(得分:2)
当您遇到想要停在的行时,只需exit
:
awk '/[[:space:]]*2/{exit}1' file
更新:[[:space:]]
将处理空格,标签等。
答案 2 :(得分:2)
使用sed删除匹配行之后的所有内容
$ sed '/^[ ]*2/,$d' input.txt
这是字符类中的空格和制表符。
答案 3 :(得分:1)
Perl one-liner:
perl -pwe 'exit if $_ =~ /^\s*2/' file
这允许行的开头和数字2
答案 4 :(得分:0)
使用带有sed的指令Q,一旦找到合适的结束行,它就不会解析文件的其余部分:
sed '/^\s*2/Q' file