Ответ 1
Введите переменную для печати строк новой строки:
filenames=$(grep 'foobar' /some/dir)
echo "$filenames"
Когда я выполняю подоболочку для получения вывода команды, разрывы строк теряются.
Например:
filenames=$(grep 'foobar' /some/dir)
echo $filenames
Предполагая, что в /some/dir
содержится более 1 файла, который содержит строку "foobar", эти имена файлов будут напечатаны в одной длинной разделительной строке вместо 1 имени файла в строке.
Я не могу просто использовать tr
для преобразования пробелов в разрывы строк, так как имена файлов могут иметь пробелы в них.
Есть ли способ поддерживать разрывы строк?
Введите переменную для печати строк новой строки:
filenames=$(grep 'foobar' /some/dir)
echo "$filenames"
не самые дружественные ресурсы, из-за труб...
grep 'foobar' /some/dir/| | awk '{print $1}' | sort -u
Вот пример вывода:
$ grep enc pwman/ui/* | awk '{print $1}'
pwman/ui/cli.py:
pwman/ui/cli.py:
pwman/ui/cli.py:
pwman/ui/cli.py:
pwman/ui/cli.py:
pwman/ui/cli.py:
Binary
$ grep enc pwman/ui/* | awk '{print $1}' | sort -u
Binary
pwman/ui/cli.py:
$