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

Вы переместили ваш /var/www/folder в ../../, но что это значит?

. и .. - специальные записи, которые есть в каждом каталоге. [F5] ссылается на этот каталог, а .. ссылается на родительский каталог.

Таким образом, ../../ - относительный путь, указывающий на каталог «большой родительский» каталог рабочего каталога, то есть каталог уровней выше вашего текущего.

Итак, когда вы запустили указанную команду mv изнутри /etc/apache2/sites-available, вы переместили другую папку в каталог на два уровня выше, чем /etc .

3
задан 17 March 2018 в 22:58

6 ответов

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

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

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

0
ответ дан 17 July 2018 в 18:37

Вот еще один однострочный:

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
ответ дан 17 July 2018 в 18:37

Будет ли это работать для вас:

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

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

cmd param | grep 'foo1\|foo5\|foo7' | tr '\n' ',' | sed 's/,\?$/\n/' >> file.csv tr '\n' ',' замените каждую строку return на «,» >>, чтобы добавить в конец вашего файла csv, не удаляя то, что уже находится внутри
2
ответ дан 17 July 2018 в 18:37

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

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

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

0
ответ дан 23 July 2018 в 19:25

Вот еще один однострочный:

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
ответ дан 23 July 2018 в 19:25
  • 1
    Трубопровод в xargs, вероятно, будет более приятным способом, чем echo плюс замена процесса ... – Byte Commander 18 March 2018 в 00:09
  • 2
    @ByteCommander Удивительный, спасибо! Я попробую это в будущем и, вероятно, отредактирую это позже. Я использую этот трюк echo, так что это должно помочь мне. – mchid 18 March 2018 в 00:16

Будет ли это работать для вас:

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

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

cmd param | grep 'foo1\|foo5\|foo7' | tr '\n' ',' | sed 's/,\?$/\n/' >> file.csv tr '\n' ',' замените каждую строку return на «,» >>, чтобы добавить в конец вашего файла csv, не удаляя то, что уже находится внутри
2
ответ дан 23 July 2018 в 19:25
  • 1
    Я думаю, вы могли бы объединить два sed s с sed 's/,\?$/\n/'. – Byte Commander 17 March 2018 в 23:29
  • 2
    Да, спасибо, я отредактировал ответ! – Paul 17 March 2018 в 23:38

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

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