Сравните два файла.csv и запишите разницу в третий файл

на самом деле здесь можно обойтись даже без программирования на Python, просто используя 2 утилиты unix:

  1. jtm-разрешается преобразование xml json без потерь
  2. jtc-позволяет манипулировать JSON

Таким образом, если ваш xml находится в file.xml, jtm преобразует его в следующий json:

bash $ jtm file.xml 
[
   {
      "quiz": [
         {
            "que": "The question her"
         },
         {
            "ca": "text"
         },
         {
            "ia": "text"
         },
         {
            "ia": "text"
         },
         {
            "ia": "text"
         }
      ]
   }
]
bash $ 

а затем, применив ряд преобразований JSON, можно прийти к желаемому результату:

bash $ jtm file.xml | jtc -w'l:[1:][-2]' -ei echo { '"answer[-]"': {} }\; -i'l:[1:]' | jtc -w'l:[-1][:][0]' -w'l:[-1][:]' -s | jtc -w'l:' -w'l:[0]' -s | jtc -w'l: <>v' -u'"text"'
[
   {
      "answer1": "text",
      "answer2": "text",
      "answer3": "text",
      "answer4": "text",
      "text": "The question her"
   }
]
bash $ 

Тем не менее, из-за того, что команда )использует сценарии оболочки (echo, она будет медленнее, чем Python -для 5000 вопросов, я ожидаю, что она будет выполняться около минуты. (В будущей версии jtcя планирую разрешить интерполяции даже в статически заданных JSON, чтобы для шаблонизации не требовалось скриптов внешней оболочки -, тогда операции будут выполняться молниеносно)

если вас интересует синтаксис jtc, вы можете найти руководство пользователя здесь:https://github.com/ldn-softdev/jtc/blob/master/User%20Guide.md

0
06.11.2019, 04:54
1 ответ

Использование grepиsed:

grep -v -F -f <(sed 's/^[*[:space:]]*//' test_case_summary.csv) test_case_list.csv > diff.csv

Команда sedудаляет все начальные *и пробельные символы из test_case_summary.csv, и этот вывод используется как ввод для опции grep's -f, определяющей файл шаблона.

Опция -Fиспользуется для интерпретации шаблонов как фиксированных строк вместо регулярных выражений, а -vвыбирает не совпадающие -строки, т. е. строки в test_case_list.csv, которые не заданы в файл шаблона. Затем вывод перенаправляется в файл diff.csv.

Кроме того, вы можете добавить параметр grep's -xдля соответствия только целым строкам.

0
28.01.2020, 03:08

Теги

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