Я хочу использовать cat с подстановочными знаками в bash, чтобы напечатать несколько маленьких файлов (каждый файл - одно предложение) для стандартного вывода. Однако содержимое отдельного файла не разделено новой строкой, которую я хотел бы для удобства чтения.
Как добавить какой-либо разделитель файлов к этой команде?
in "$@"
- это неявно.Просто используйте цикл вместо простого
cat
:источник
Если вы хотите, чтобы имя файла между файлами, используя
tail
:(Если вы хотите
tac
вместоcat
, некоторыеtail
реализации имеют-r
опцию для эквивалентногоtac
функционала)источник
Это будет работать:
Вам не нужны никакие циклы оболочки или что-то иное, и это всегда будет следовать за выводом файла с
\n
ewline - за исключением, возможно, самого последнего.В противном случае, если вы хотите, чтобы между выходными данными каждого файла выводилась пустая строка, это может сработать:
Это всегда будет следовать за выводом файла с
\n
ewline и дополнительной пустой строкой.Вы можете назвать это как:
источник
for n in 1 2 3; do printf "$n" >"$n"; done; sed '' -- [123]
sed
должен всегда печатать\n
ewline, прежде чем он напечатает что-либо еще, хотя последняя строка последнего файла может не добавить\n
ewline. Я мог бы поклясться, что я ответил на этот вопрос раньше.1\n2\n3
. оно работает. это всегда так. что это печатает для вас?\n
в RHS не является стандартным. Вы можете использоватьsed -e '$G'
.Как и в ответе @terdon , если вы предпочитаете видеть имя файла в будущем, вы можете использовать
head
команду:head
по умолчанию - первые 10 строк, поэтому использовать его без параметров команды для вашего случая (одно предложение на файл) вполне нормально. В противном случае вам нужна-n X
опция.источник
Другой способ - использовать
grep -h
просто поиск пустой строки в каждом файле. Это будет соответствовать всем строкам, независимо от того, сколько строк завершено или нет. Результаты grep всегда заканчиваются символом новой строки. В-h
опции подавляет предваряя каждую строку вывода с именем файла он пришел из:Или вы можете использовать GNU
paste
в-s
режиме erial с символом новой строки в качестве разделителя:источник