>我在一个文件夹中有多个文件。这是文件的外观 文件1.txt
ghfgh gfghh
dffd kjkjoliukjkj
sdf ffghf
sf 898575
sfkj utiith
##
my data to be extracted
我想从所有文件中提取紧靠"##"模式下方的行并将它们写入输出文件。我希望文件名也附加到输出文件中。 期望的输出
>File1
My data to be extracted
>File2
My data to be extracted
>File3
My data to be extracted
This is what i tried
awk '/##/{getline; print FILENAME; print ">"; print}' *.txt > output.txt
假设每个文件有一个提取(否则文件名头将重复(
$ awk '/##/{f=1; next} f{print ">"FILENAME; print; f=0}' *.txt > output.txt
Perl 来救援!
perl -ne 'print ">$ARGVn", scalar <> if /^##/' -- *.txt > output.txt
-n
逐行读取输入$ARGV
包含当前输入文件名scalar <>
从输入中读取一行
使用grep的快速方法:
grep -A1 '##' *.txt|grep -v '##' > output.txt
POSIX 或 GNU sed:
$ sed -n '/^##/{n;p;}' file
my data to be extracted
grep 和 sed:
$ grep -A 1 '##' file | sed '1d'
my data to be extracted