我有一个包含很多单词的文件:
one
two
three
four
tree
house
cat
dog
etc
我希望删除所有单词,直到“house”以这种方式获取:
cat
dog
etc
答案 0 :(得分:6)
sed -n '0,/^house$/d;p' input.txt
答案 1 :(得分:0)
awk '
BEGIN { noprint = 1; cue = ARGV[1]; ARGV[1] = ""}
(!noprint) { print }
(noprint && $0 == cue) { noprint = 0 }
' house textfile
答案 2 :(得分:0)
您可以使用Perl one-liner轻松完成此操作,您当然可以将其合并到bash脚本中。
$ perl -ne 'print if $ok; $ok=1 if /^house$/' sample.txt
cat
dog
etc
答案 3 :(得分:0)
您也可以使用Unix文本编辑器来执行此类任务。请注意,ed会将整个文件读入内存并在原位编辑文件,而无需先前的备份。
# prints result to stdout
printf '%s\n' H ',g/^house$/1,/^house$/d' ',p' | ed -s file
printf '%s\n' H ',g/^house$/1,//d' ',p' | ed -s file # short version
# edits file in-place
printf '%s\n' H ',g/^house$/1,/^house$/d' wq | ed -s file
有关ed的更多信息,请参阅:
“使用脚本中的ed文本编辑器编辑文件”,