0
我試圖從遠程計算機上的xml文件中獲取版本號。我通過Net :: SSH :: Perl cmd
函數執行此操作。它看起來是這樣的:
my ($version, $err, $exit) = $ssh->cmd("head -11 /some/path/to/the/file.xml | tail -1 | sed 's/<[^>]\+>//g' | xargs");
print Dumper $version;
我試圖實現與也就是說,提取數出XML標籤<version>2.6</version>
這工作完全正常,當我使用的CMD通過膩子SSH殼
[email protected]:~>head -11 /some/path/to/the/file.xml | tail -1 | sed 's/<[^>]\+>//g' | xargs
2.6
[email protected]:~>
然而,Perl的打印
$VAR1 = '<version>2.6</version>
';
任何想法爲什麼它不起作用?
編輯:很明顯,這無關淨:: SSH :: Perl的模塊,因爲
perl -e "system(\"head -11 /some/path/to/the/file.xml | tail -1 | sed 's/<[^>]\+>//g' | xargs\");"
<version>2.6</version>
你的命令行看起來太複雜。我假設簡化它也會解決這個問題。任何特定的原因,你不只是複製文件,並在Perl中處理它?或者試試'sed'1,10d; s/<[^>] *> // g:q'/ some/path/to/the/file.xml' – tripleee
特別是尾隨的'xargs'是什麼?你想用這個來完成什麼?' – tripleee
@tripleee最後的xargs用於從輸出中截斷不需要的空格/製表符/換行符。 'echo「abc」| xargs'將打印'abc'而不是'\ \ \ abc \ \ \'。 – Vince