2017-08-17 72 views
-1

我試圖在第二行使用perl的文本文件插入新行。但它一直在失敗。通過Perl在文本文件中插入一行失敗

我正在使用下面的命令來實現相同。

perl -ni -e "print; print \"permissibleCars = [ ${part[*]} ]\n\" if $. == 2" query/containerId_count.js 

但我不斷收到錯誤: -

[email protected]:~/mongosearch# distinct_array=`sed ':a;N;$!ba;s/\n/ /g' output/ontainerId_distinct.txt` 
[email protected]:~/mongosearch# declare -a arr=($distinct_array) 
[email protected]:~/mongosearch# batchsize=1 
[email protected]:~/mongosearch# IFS=, 
[email protected]:~/mongosearch# part=("${arr[@]:i:batchsize}") 
[email protected]:~/mongosearch# echo $part 
"C:00000092666270:53882159774" 
[email protected]:~/mongosearch# perl -ni -e "print; print \"permissibleCars = [ ${part[*]} ]\n\" if $. == 2" query/containerId_count.js 
Bareword found where operator expected at -e line 1, near ""permissibleCars = [ "C" 
    (Missing operator before C?) 
String found where operator expected at -e line 1, near "53882159774" ]\n"" 
    (Missing operator before " ]\n"?) 
syntax error at -e line 1, near ""permissibleCars = [ "C" 
Illegal octal digit '9' at -e line 1, at end of line 
Execution of -e aborted due to compilation errors. 

你能幫我一樣嗎?

問候

+0

試過,但它沒有奏效: - 無法在EOF之前的任何位置找到字符串終止符'''-e第1行。 – user2854333

+0

>>'perl -ni -e'print ;打印「permissibleCars = [\ $ {part [*]}] \ n」如果$。== 2'' –

+0

這不會給出錯誤,但它不會複製存儲在變量中的數據,而是複製permissibleCars = [$ {part – user2854333

回答

1

試試這個:

export PARTS=${part[*]} 
perl -lni -e 'print; print "permissibleCars = [".join(",",split/ /,$ENV{PARTS})."]" if $. == 2' query/containerId_count.js 

而且 在Linux平臺上,我們應該用單引號爲一行。 Perl black book請參閱第19頁和第20頁。

+0

不,這似乎是有奇怪的問題。它隨機添加]和修剪陣列內的對象。 – user2854333

+0

@ user2854333然後在這裏使用這個命令得到的輸出是什麼?看起來問題在於你如何構建'$ {part [*]}'。 – yacc

+0

它是一個數組,它將數組保存爲數組的子集。它可以像「C:1000817:57160911940」,「C:1000817:57176485410」,「C:1000817:57205942228」,「C:1000817:57211484466」,「C:1000817:57215240125」,「C:1000817:57218809582 「C:1000817:57235548557」,「C:1000817:57235388574」,「C:1000817: 57237335061」,「C:1000817:572239290315」,「C:1000817:57250543857」 ,「C:1000817:57303722225」,「C:1000860:379598081」,「C:1000882:379598272」,「C:1000960:379598451」 – user2854333