Awk 使用其他文件的名称和内容创建新的文本文件
我有几个包含文本的.seq文件。 我想获得一个包含以下内容的文本文件:Awk 使用其他文件的名称和内容创建新的文本文件,awk,Awk,我有几个包含文本的.seq文件。 我想获得一个包含以下内容的文本文件: name_of_the_seq_file1 contents of file 1 name_of_the_seq_file2 contents of file 1 name_of_the_seq_file3 contents of file 3 所有文件都在同一目录中。 有可能使用awk或类似产品??谢谢 您可以使用以下命令: awk 'FNR==1{print FILENAME}1' *.seq FNR是当前输入文件
name_of_the_seq_file1
contents of file 1
name_of_the_seq_file2
contents of file 1
name_of_the_seq_file3
contents of file 3
所有文件都在同一目录中。
有可能使用awk或类似产品??谢谢 您可以使用以下命令:
awk 'FNR==1{print FILENAME}1' *.seq
FNR
是当前输入文件的记录编号(默认为行号)。每次awk开始处理另一个文件FNR==1
,在这种情况下,当前文件名通过{print filename}
打印出来
尾随的1
是一种awk习惯用法。它的计算结果总是true,这使得awk
打印所有输入行
注意:
上述解决方案仅在该文件夹中没有空文件时有效。检查哪些点指出了这一点。您可以使用以下命令:
awk 'FNR==1{print FILENAME}1' *.seq
FNR
是当前输入文件的记录编号(默认为行号)。每次awk开始处理另一个文件FNR==1
,在这种情况下,当前文件名通过{print filename}
打印出来
尾随的1
是一种awk习惯用法。它的计算结果总是true,这使得awk
打印所有输入行
注意:
上述解决方案仅在该文件夹中没有空文件时有效。检查哪一点指出了这一点。如果可能存在空文件,则您需要: 使用GNU awk:
awk 'BEGINFILE{print FILENAME}1' *.seq
对于其他AWK(未经测试):
如果可能存在空文件,则您需要: 使用GNU awk:
awk 'BEGINFILE{print FILENAME}1' *.seq
对于其他AWK(未经测试):
perl-lpe'print$ARGV if$。==1.如果eof'*.seq
$。
是行号$ARGV
是当前文件的名称close(ARGV)if eof
重置每个文件末尾的行号perl-lpe'print$ARGV if$。==1.如果eof'*.seq
$。
是行号$ARGV
是当前文件的名称close(ARGV)如果eof
重置每个文件末尾的行号使用AWK很难缩短和提高效率。请注意,如果文件为空,则会失败。对于OP:这可能吗?如果可能的话,最好使用GNU awks BEGINFLE而不是FNR==1。@Manu Górriz Uh!我原以为你会得到埃德蒙的回答。它总是正确的,只有在文件夹中没有空文件的情况下,我的才会正确。使用AWK很难缩短和提高效率。请注意,如果有空文件,它将失败。对于OP:这可能吗?如果可能的话,最好使用GNU awks BEGINFLE而不是FNR==1。@Manu Górriz Uh!我原以为你会得到埃德蒙的回答。它总是正确的,只有在该文件夹中没有空文件时才正确