awk/sed解决方案,用于匹配图案后仅打印下一行

awk/sed解决方案,用于匹配图案后仅打印下一行,awk,sed,file-manipulation,Awk,Sed,File Manipulation,我在一个文件夹中有多个文件。这就是文件的外观 File1.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 extracte

我在一个文件夹中有多个文件。这就是文件的外观 File1.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

假设每个文件提取一次,否则将重复文件名头

$ awk '/##/{f=1; next} f{print ">"FILENAME; print; f=0}' *.txt > output.txt
救命啊

perl -ne 'print ">$ARGV\n", scalar <> if /^##/' -- *.txt > output.txt
-n逐行读取输入 $ARGV包含当前输入文件名 标量从输入中读取一行 救命啊

perl -ne 'print ">$ARGV\n", scalar <> if /^##/' -- *.txt > output.txt
-n逐行读取输入 $ARGV包含当前输入文件名 标量从输入中读取一行 使用grep的快捷方式:

grep -A1 '##' *.txt|grep -v '##' > output.txt
使用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 
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 

这不会产生任何输出。它会写入output.txtOutput.txt是否为emptyId您是否尝试使用发布的示例文件?我看剧本没有任何问题。也许你的文件不是它们应该是什么?相似不是相同的同义词。将发布的内容保存在名为File1.txt的文件中,并使用该文件测试脚本。这不会产生任何输出。它会写入output.txtOutput.txt为空。是否尝试使用发布的示例文件?我看剧本没有任何问题。也许你的文件不是它们应该是什么?相似不是相同的同义词。将发布的内容保存在名为File1.txt的文件中,并使用该文件测试脚本。这就是outpur看起来像File1.txt:File1.txt-my data to extracted的方式。我将添加-H选项,并将第二个grep更改为sed'//d/-/Ds/^/>/;s/-/\n/'outpur看起来就是这样的File1.txt:File1.txt-my data to extracted我会添加-H选项,并将第二个grep更改为sed'/d/-/Ds/^/>/;s/-/\n/'如果您考虑将来使用getline,请确保在决定这样做之前了解中讨论的所有内容。如果您考虑将来使用getline,请确保在决定这样做之前了解中讨论的所有内容。