【发布时间】:2013-04-23 14:23:40
【问题描述】:
我想在一个文件中 grep 版本号并在另一个文件中替换它。我想在文件 1 中 grep 4.3.0.5 并在文件 2 中的 4.3.0.2 替换它。我有以下命令来获取数字,但是如何在第二个文件中剪切/替换它??
文件 1:
应用程序:4.3.0.5(或)应用程序:4.3.0.5-SNAPSHOT
文件2: 编辑前
grid_application_distribution_url=nexus://com.abcd.efge.ce/App/4.3.0.2/tar.gz/config
文件 2:编辑后(所需结果:)
如果文件中的 $VERISON 没有 SNAPSHOT 一词,则在文件 2 中
grid_application_distribution_url=nexus://com.abcd.efge.ce/App/4.3.0.5/tar.gz/config
如果 $VERSION 有 SNAPSHOT 那么文件 2 中的行应该是
grid_application_distribution_url=nexus-snapshot://com.abcd.efge.ce/App/4.3.0.5/tar.gz/config
VER=$(awk -F: '/^App/{sub(/ .*$/, "", $2); print $2}'/path/file1.txt)
echo $VER
if ($vER ~ /SNAPSHOT/)
/usr/bin/ssh -t -t server2.com "sub("=nexus:", ":=nexus-snapshot") /path/file2" && sub(/[^\/]+\/tar\.gz/, $VER"/tar.gz") /path/file2
【问题讨论】:
-
任何时候你发现自己在使用 grep+awk 或 grep+sed 或 sed+awk 时使用的工具太多了 - 只需使用 awk。
-
同上,除了 s/awk/perl/g