繁体   English   中英

将文件重命名为第三个单词(bash)

[英]Rename file as third word on it (bash)

我有几个自动生成的文件(例如,请参见下图),我想根据第一行中的第三个单词重命名它们(在本例中为 42.txt)。

第一行:

配体 CC@@HOc3ccccc3 42 P10000001

有没有办法做到这一点?

假设您有file.txt包含:

ligand CC@@HOc3ccccc3 42 P10000001

并且您想根据文件中的第三个字段将file.txt重命名为42.txt

*使用awk

最简单的方法是在命令替换中简单地使用mvawk ,例如:

mv file.txt $(awk 'NR==1 {print $3; exit}' file.txt).txt

命令替换$(...)只是awk表达式awk 'NR==1 {print $3; exit}' awk 'NR==1 {print $3; exit}'仅输出第三个字段(例如42 )。 指定NR==1确保仅考虑第一行,并在该规则末尾exit确保如果file.txt是 100000 行文件,则不再处理浪费时间的行。

确认

file.txt现在重命名为42.txt ,例如

$ cat 42.txt
ligand CC@@HOc3ccccc3 42 P10000001

使用read

您也可以使用read简单地读取第一行并将第三个单词作为name ,然后mv文件,例如

$ read -r a a name a <file.txt; mv file.txt "$name".txt

上面的临时变量a只是用来读取和丢弃文件第一行中的其他单词。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM