Linux 打印文件中的最后一个字段,并将其用作另一个文件的名称

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

我有一个以制表符分隔的文件,有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


我可以打印列,但似乎无法从文件中提取数字。即使我能提取出这个数字,我似乎也不知道如何存储这个数字作为新的文件名。

也许是这样的

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}'
@MohitJain
END
部分仅在最后一行之后运行,因此最后一个字段
$NF
保存最后一行的最后一个数据。这将存储到变量
名称
。然后使用
mv
将文件重命名为变量
name
中的名称,请注意,并非所有awk的结尾部分都会填充$NF。@EdMorton在这种情况下,您可以使用
awk'{f=$NF}END{printf}'
wellll-从技术上讲,它应该是
awk'{f=$NF ORS}END{printf“%s”,f}“
因此,如果输入文件为空,它不会打印空行,但我认为在这种情况下这并不重要。