Помещение вывода в таблицу

вы можете использовать ls и grep вместе, это очень просто, а с помощью -v в опции grep вы можете искать слова или фразы, которых нет, поэтому он выведет все, что не связано с вашим поиском.

Находясь в каталоге, который вы хотите сделать, попробуйте:ls -l | grep -v корень || июль

Первая часть ls -l перечисляет все файлы в длинном порядке

| Символ называется каналом, и он принимает ввод предыдущей команды и использует его в качестве ввода в следующей команде, в этом случае ls -l будет использоваться в качестве ввода в 'grep'.

Во второй части grep -v root используется grep с параметром-v , который с поисковым термином root, параметр-v используется для ищите все содержимое, в котором нет того, что вы искали, поэтому он будет искать все, что не имеет «рута».

Наконец последняя часть || Июль , || в основном означает «и» в grep, поэтому при указании двух или более поисковых терминов «июль» является вторым поисковым термином.***

PS :Я НЕ ДУМАЮ, ЧТО ВОПРОС ПРОСИТ ВАС СОЗДАТЬ ФАЙЛ С НАЗВАНИЕМ 'NOTOWNEDBYROOT', А ВМЕСТО ПРОСИТ ВАС ПОИСК В КАТАЛОГЕ ДЛЯ ВСЕХ ФАЙЛОВ/ПОДКАТАЛОГОВ, КОТОРЫЕ НЕ ПРИНАДЛЕЖАТ ROOT ИЛИ СДЕЛАНЫ В ИЮЛЕ

4
14.10.2019, 15:42
1 ответ

Вы можете использовать awk, чтобы соединить вывод grepс одной строкой в ​​файле, затем транспонировать с помощью csvtoolи опционально column -nt, чтобы сделать вывод хорошим (обратите внимание, что -nявляется Debian и может быть недоступно для вашей платформы ).

grep -o "201[1-4].[0-9][ -9]" file1.txt file2.txt file3.txt \
| awk -F: '
  {
    if (!s[$1]){ s[$1]=$2 }
    else { s[$1]=s[$1]","$2 }
  }
  END {
    for (f in s){ print f","s[f] }
  }' \
| csvtool transpose -u " " - \
| column -nt

Выход:

file1.txt  file3.txt  file2.txt
2012.69    2013.54    2013.17
2013.44    2013.9     2012.6
                      2013.75
                      2013.08

Возможно, вам потребуется установить csvtool.

2
27.01.2020, 20:59

Теги

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