как к grep для строки с несколькими ключевыми словами и превращают его в csv

С этой командой:

cmd param | grep 'foo1\|foo5\|foo7'

Я добираюсь

foo1=bar1
foo5=bar5
foo7=bar7

как я заставляю этот вывод записать в файл CSV?

в конечном счете я хотел бы выполнить команду в цикле с параметрическим усилителем, изменяющимся для каждого цикла (следовательно вывод), таким образом, будет полезно, если файл станет как:

cat output.csv
    foo1=bar1, foo5=bar5, foo7=bar7
    foo1=value, foo5=value, foo7=value
2
задан 17 March 2018 в 21:58

3 ответа

Вот другая острота:

echo $(cmd param | grep 'foo1\|foo5\|foo7') | sed 's/ /, /g' | tee -a output.csv

Команда: echo $(cmd param | grep 'foo1\|foo5\|foo7') распечатает вывод в линейной форме.

Это помещает запятую, промежуточную переменные: sed 's/ /, /g'

Это добавляет вывод к новой строке в конце файла: tee -a output.csv

2
ответ дан 2 December 2019 в 02:13

Был бы это работать на Вас:

cmd param | grep 'foo1\|foo5\|foo7' | tr '\n' ',' | sed 's/,$//'
  • tr '\n' ',' замените каждый возврат строки'',
  • sed 's/,$//' удалите последний знак, если это'',

И если Вы хотите поместить его в файл CSV, можно добавить, что '\n' в конце строки затем перенаправляет его к файлу CSV:

cmd param | grep 'foo1\|foo5\|foo7' | tr '\n' ',' | sed 's/,\?$/\n/' >> file.csv
  • sed 's/,\?$/\n/' Удалит последний символ, если это будет'', и добавьте '\n'
  • >> используется для добавления в конце файла CSV, не удаляя то, что уже внутри
2
ответ дан 2 December 2019 в 02:13

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

perl -0nE 'say join(",",/(foo\d+=\w+)/g)' ex* > out

Это избежит Вашего внешнего цикла

0
ответ дан 2 December 2019 в 02:13

Другие вопросы по тегам:

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