Arch Linuxパッケージを私が作成しているパッケージマネージャの形式に変換するために、Bashスクリプトを作成していますが、一部のメタデータファイルをファイル形式に変換する必要があります.toml
。以前も使用してきましたが、sed
Bashスクリプトで実装できることが必要でした。変換は次のようにする必要があります。
入力する:
... other stuff ...
depends = "some-dependency"
depends = "another-dependency"
depends = "yet-another-dependency"
出力:
... other stuff already converted ...
depends = [ "some-dependency", "another-dependency", "yet-another-dependency" ]
答え1
使用awk
:
awk -F' = ' '
$1 == "depends" {
printf "%s %s", (flag!=1 ? "depends = [" : ","), $2
flag=1
next
}
flag {
print " ]"
flag=0
}
{ print }
END {
if (flag) print " ]"
}
' file
入力する:
... other stuff ...
depends = "some-dependency"
depends = "another-dependency"
depends = "yet-another-dependency"
... more stuff ...
depends = "next-dependency"
depends = "and-another-dependency"
出力:
... other stuff ...
depends = [ "some-dependency", "another-dependency", "yet-another-dependency" ]
... more stuff ...
depends = [ "next-dependency", "and-another-dependency" ]
答え2
入力ファイルの「...other stuff..」部分を除外するには、次のコードを使用できます。
$ awk -F"=" 'NR==1{printf $1 " = [" } {printf $2 ","};END{print""}' infile | sed 's/.$/\]/'
depends = [ "some-dependency", "another-dependency", "yet-another-dependency"]