IP:PORT
다음 과 같은 텍스트 파일이 있습니다 .
1.1.1.1:1919
2.2.2.2:111
1.1.1.1:987
JSON 형식의 스크립트에서 이를 사용해야 합니다.
async def main(loop):
servers = [{
"address": "ip",
"port": port
}, {
"address": "ip",
"port": port
}]
출력이 필요합니다.
async def main(loop):
servers = [{
"address": "1.1.1.1",
"port": 1919
}, {
"address": "2.2.2.2,
"port": 111
}, {
"address": "1.1.1.1,
"port": 987
}]
저는 리눅스를 사용하고 있습니다.
답변1
jq -nRr '
[ inputs | split(":") | {address: first, port: last} ]
| "async def main(loop):\n servers = \(.)"
' addresses
산출
async def main(loop):
servers = [{"address":"1.1.1.1","port":"1919"},{"address":"2.2.2.2","port":"111"},{"address":"1.1.1.1","port":"987"}]
답변2
사용행복하다(이전 Perl_6)
raku -MJSON::Fast -e 'my @a.=push(.split: ":") for lines; say to-json( ( %("address", .[0], "port", .[1].Int) for @a), :sorted-keys );'
입력 예:
1.1.1.1:1919
2.2.2.2:111
1.1.1.1:987
예제 출력:
[
{
"address" : "1.1.1.1",
"port" : 1919
},
{
"address" : "1.1.1.1",
"port" : 987
},
{
"address" : "2.2.2.2",
"port" : 111
}
]
참고: 보기 좋게 인쇄되지 않은 출력은 다음을 설정하여 얻을 수 있습니다 pretty => False
.
~$ raku -MJSON::Fast -e 'my @a.=push(.split: ":") for lines; say to-json( ( %("address", .[0], "port", .[1].Int) for @a), pretty => False );' file
[{"address":"1.1.1.1","port":1919},{"port":111,"address":"2.2.2.2"},{"port":987,"address":"1.1.1.1"}]
Raku 생태계의 다른 관련 모듈에는 JSON::Tiny
, JSON::Pretty
, 및 가 있습니다 JSON::Pretty::Sorted
.