Как перебирать коллекцию объектов JSON (не массив) в Perl?

Вы можете сохранить каждую строку в отдельный файл, например.

f1 -1-я геномная последовательность f2 -2-я геномная последовательность

Теперь вам нужно преобразовать линии (горизонтальные в вертикальные):

awk '{gsub(".","&\n");printf "%s",$0}' < f1 >f1a
awk '{gsub(".","&\n");printf "%s",$0}' < f2 >f2a

Это сохранит новый формат в 2 новых файла (f1a и f2a )Теперь сравните 2 файла сdiff

diff -y f1a f2a  #will output both lines and show differences
diff -c f1a f2a  #will only output the differences and tell you from which line to which line

Подробнее о различиях:http://man7.org/linux/man-pages/man1/diff.1.html

Вышеупомянутое можно также превратить в небольшой скрипт, в который можно передать две геномные последовательности в качестве переменных.

Если вам нужен цветной вывод, попробуйте использоватьcolordiff(в Ubuntu:sudo apt-get install colordiff)и просто замените diffна colordiffв приведенном ниже сценарии. Для вывода рядом используйте опцию -y:

.

#!/bin/bash
# This script will compare the 2 genomic sequences
echo "1st genomic sequence, followed by [ENTER]:"
read gena
echo "2nd genomic sequence, followed by [ENTER]:"
read genb
echo $gena | awk '{gsub(".","&\n");printf "%s",$0}' > /tmp/fa
echo $genb | awk '{gsub(".","&\n");printf "%s",$0}' > /tmp/fb
echo "Insert the diff argument you wish to use (e.g. -y or -c). Please refer to man diff for information. Hit [ENTER]:"
read $arg
diff $arg /tmp/fa /tmp/fb
exit

0
17.12.2019, 04:46
1 ответ

Вот так:

#!/usr/bin/perl
use JSON;
use utf8;
use strict; use warnings;

my $data = '{
  "0y7vfr1234": {
    "username": "user1@example.com",
    "password": "some-random-password123",
    "uri": "ww1.example.com",
    "index": 14
  },
  "v2rbz1568": {
    "username": "user3@example.com",
    "password": "some-random-password125",
    "uri": "ww3.example.com",
    "index": 29
  },
  "0zjk1156": {
    "username": "user2@example.com",
    "password": "some-random-password124",
    "uri": "ww2.example.com",
    "index": 38
  }
}';

my $json = decode_json $data;

foreach my $key (keys %$json) {
    print "$key\n";
}

print "$json->{v2rbz1568}->{username}\n";

 Вывод

v2rbz1568
0y7vfr1234
0zjk1156
user3@example.com
1
28.01.2020, 02:38

Теги

Похожие вопросы