で提案した方法を使用しています。https://askubuntu.com/questions/434051/how-to-replace-a-string-on-the-5th-line-of-multiple-text-filesアーカイブの最初の行を修正します。最初の行file.txt
は次のように見なされます。
keepme=change1me
欲しい
keepme=newstring
問題は、newstringがvar1に格納されることです。
私は試した:
var1=newstring
perl -i -pe 's/(keepme=)(.*)/$1${var1}/ if $.==1' ../file.txt
perl ${var1} -i -pe 's/(keepme=)(.*)/$1$ARGV[0]/ if $.==1' ../file.txt
どちらの場合も、結果は次のようになります。
keepme=
もし私がするなら
perl -i -pe ${var1} 's/(keepme=)(.*)/$1$ARGV[0]/ if $.==1' ../file.txt
Can't open s/(genome1=)(.*)/$1$ARGV[0]wq/ if $.==1: No such file or directory
ベストアンサー1
Perlで環境変数にアクセスするには、$ENV{var1}を使用してください。
これを行うには、変数をエクスポートできます。つまり、設定を解除するまで変数が設定されます。
エクスポート var1=新しい文字列
perl -i -pe 's/(keepme=)(.*)/$1$ENV{var1}/ if $.==1' ../file.txt
または、Perlコマンドの実行時に使用する変数を設定したい場合は、コマンドの前に割り当てることができます。
var1=newstring2 perl -i -pe 's/(keepme=)(.*)/$1$ENV{var1}/ if $.==1' ../file.txt