Linux 打印文件中的最后一个字段,并将其用作另一个文件的名称
我有一个以制表符分隔的文件,有3行7列。我想使用文件末尾的数字重命名另一个文件 制表符分隔文件的示例:Linux 打印文件中的最后一个字段,并将其用作另一个文件的名称,linux,perl,bash,awk,grep,Linux,Perl,Bash,Awk,Grep,我有一个以制表符分隔的文件,有3行7列。我想使用文件末尾的数字重命名另一个文件 制表符分隔文件的示例: a b c d e f g a b c d e f g a b c d e f 1235 因此,我想从制表符分隔的文件中提取数字,然后将“file1”重命名为提取的数字(mvfile1235) 我可以打印列,但似乎无法从文件中提取数字。即使我能提取出这个数字,我似乎也不知道如何存储这个数字作为新的文件名。也许是这样的 n
a b c d e f g
a b c d e f g
a b c d e f 1235
因此,我想从制表符分隔的文件中提取数字,然后将“file1”重命名为提取的数字(mvfile1235
)
我可以打印列,但似乎无法从文件中提取数字。即使我能提取出这个数字,我似乎也不知道如何存储这个数字作为新的文件名。也许是这样的
num=$(tail -1 file1 | rev | awk '{print $1}' | rev)
mv file1 $num
使用perl单行程序
perl -ne 'BEGIN{($f) = @ARGV} ($n) = /(\d+)$/; END{rename($f, $n)}' file1
您可以使用此
awk
name=$(awk 'END {print $NF}' file)
mv file $name
您可以使用变量
NF
获取最后一个字段。使用awk
您可以执行awk'END{print$NF>$NF}文件
,或者如果文件太大,tac file | awk'{print$NF>$NF;exit}'
@MohitJainEND
部分仅在最后一行之后运行,因此最后一个字段$NF
保存最后一行的最后一个数据。这将存储到变量名称
。然后使用mv
将文件重命名为变量name
中的名称,请注意,并非所有awk的结尾部分都会填充$NF。@EdMorton在这种情况下,您可以使用awk'{f=$NF}END{printf}'
wellll-从技术上讲,它应该是awk'{f=$NF ORS}END{printf“%s”,f}“
因此,如果输入文件为空,它不会打印空行,但我认为在这种情况下这并不重要。