나는 간단한 펄 스크립트를 가지고 있으며 "도시"라는 단어까지 모든 것을 제거하고 싶다. 또는 쉼표의 ","의 n 번째 항목 (내 경우에는 2 번째 항목)까지 모두 제거하십시오. 다음은 아래 보이는 것입니다.JSON 웹 응답의 일부를 삭제하려면 어떻게해야합니까?
#!/usr/bin/perl
use warnings;
use strict;
my $CMD = `curl http://ip-api.com/json/8.8.8.8`;
chomp($CMD);
my $find = "^[^city]*city";
$CMD =~ s/$find//;
print $CMD;
출력은 이것이다 :
{"as":"AS15169 Google Inc.","city":"Mountain View","country":"United States","countryCode":"US","isp":"Google","lat" :37.386,"lon":-122.0838,"org":"Google","query":"8.8.8.8","region":"CA","regionName":"California","status":"success","timezone":"America/Los_Angeles","zip":"94035"}
그래서 내가
" {"as":"AS15169 Google Inc.","
를 떨어 뜨리거나까지 떨어 않는 원하는
{"as":"AS15169 Google Inc.","city":"Mountain View",
편집 :
문자열과 일치 할 때 너무 많이하고있는 것을 봅니다. "도시"이전에 모든 것을 제거하는 문제를 해결했습니다. 나는 또한 지금과 같은 대체 기능을 변경하는 동안 내 $의 발견은,
my $find = ".*city";
로 변경되었습니다
$CMD =~ s/$find/city/;
여전히 쉼표 또는의 n 번째 발생하기 전에 모두 제거하는 방법을 생각하지 않은
그 문제에 대한 문자/문자열.
당신이 실제 JSON 파서를 사용하여 생각 해 봤나? ('도시'가 두 번째 필드라는 가정을 하드 코딩하는 대신 쉼표 등이 포함되지 않는다는 가정) – ruakh
http://search.cpan.org/~makamaka /JSON-2.90/lib/JSON.pm – Paul
조언 해 주셔서 감사합니다. 고맙습니다. –