我有一个文件,其中有几行,比方说:
服务器文件.txt:
[main]
server1 param1 param2 param3
server2 param1 param2 param3
我想采用最后一列的第一个值来组成脚本中的文件名,expect
以便文件名是:server2_030417T124700, 在哪里030417T124700是创建文件的当前日期。
我已经能够用这些行实现日期部分:
#!/usr/bin/expect -f
log_file ./log/post.log
<some_code>
system mv ./log/post.log ./log/post_[clock format [clock seconds] -format {%Y%m%dT%H%M%S}].log
但我哪里有“邮政_“ 我想拥有 ”服务器2" 基于 server_file.txt 的最后一行
我尝试通过使用执行 bash 命令的变量来做到这一点,tail -1 server_file.txt | awk '{print $1}'
但没有成功,我认为不使用 bash 命令也可以做到这一点。
答案1
tcl
在脚本中添加这 3 行代码expect
以获取服务器名称。
set fp [open "server_file.txt" r]
while {[gets $fp data] >= 0} {set servername [lindex [regexp -inline -all -- {\S+} $data] 0]}
close $fp
答案2
已经避免了该命令并在从脚本执行时tail
使用正确的语法:awk
expect
#!/usr/bin/expect -f
log_file ./log/post.log
set servername [exec awk {FNR>1 {print $1}} server_file.txt]
system mv ./log/post.log ./log/"$servername"_[clock format [clock seconds] -format {%Y%m%dT%H%M%S}].log