このようなログ行があります-
/mnt/internal-app/logs/internal-app.log_2019-08-21.log.gz:2019-08-21 07:31:14,153 5458142 [XNIO-3 task-4] INFO c.c.p.i.m.ws.FileManger [FileName.java:1838] - UUIDs in this bucket 8501792126581991569,8073766106536916628,4830289023695906800,6135982080116553120,8306484440313978157,9040948912536460872,8471856544054164043,5431263453539111247,7661719762428556576
/mnt/internal-app/logs/internal-app.log_2019-08-21.log.gz:2019-08-21 07:31:14,153 5458144 [XNIO-3 task-4] INFO c.c.p.i.m.ws.FileManger [FileName.java:1838] - UUIDs in this bucket 6501792126581991569,8073766106536916628,4830289023695906800,6135982080116553120,8306484440313978157,9040948912536460872,8471856544054164043,5431263453539111247,7661719762428556576
catの出力でperlを使用してUUIDを取得し、それぞれを二重引用符で囲みます-
cat eligible_uuids_final_app1.txt | perl -ne 'chomp;if(s/^.*UUIDs in this bucket //){@uuids=split(/,/); print "," , join ",",map{qq/"$_"/} @uuids; }'
取得 -
"9556896620363267700","7159125371810704365"
さらに、これらをそれぞれ最初の括弧で囲みます。私はperlの専門家ではありませんが、開始ブラケットを追加できました-
cat eligible_uuids_final_app1.txt | perl -ne 'chomp;if(s/^.*UUIDs in this bucket //){@uuids=split(/,/); print "," , join ",(",map{qq/"$_"/} @uuids; }'
取得 -
("9556896620363267700",("7159125371810704365"
末尾のブラケットを追加しようとしています-
cat eligible_uuids_final_app1.txt | perl -ne 'chomp;if(s/^.*UUIDs in this bucket //){@uuids=split(/,/); print "," , join ",(",map{qq/"$_"/}, join ,")" @uuids; }'
構文エラーの取得-
$ cat eligible_uuids_final_app1.txt | perl -ne 'chomp;if(s/^.*UUIDs in this bucket //){@uuids=split(/,/); print "," , join ",(",map{qq/"$_"/}, join ,")" @uuids; }'
Array found where operator expected at -e line 1, near "")" "
(Missing operator before ?)
syntax error at -e line 1, near "},"
Execution of -e aborted due to compilation errors.
私はあなたが正確に何をしたいの出力は明らかではないんだ-あなただけ置き換えることができない
—
steeldriver
map{qq/"$_"/}
でmap{qq/"($_)"/}
ああ、簡単でした。@steeldriverを回答として追加してください。
—
サンディーパンナス
@SandeepanNathよろしくお願いします
—
steeldriver
cat
ときに使用する必要はありません<
!