Можно ли создавать программные ссылки, объединяющие несколько файлов? [дубликат]

Вы можете использовать grep -B2 -E '^ [0-9] {5} + [a-zA-Z] + $' , чтобы попытаться найти только блоки адресов.

Некоторые примечания:

  • см. man grep , чтобы получить представление о параметрах
  • см. Конец справочной страницы для grep, чтобы найти справочную страницу, которая подробно объясняет синтаксис регулярных выражений, GNU Сама справочная страница grep также немного объясняет регулярное выражение
  • -B - это «строки перед совпадением» и может быть лучше для вас, чем -C
  • -E для расширенного синтаксиса регулярных выражений
  • указанное мной регулярное выражение соответствует любой строке, состоящей из пяти цифр ( {5} повторяет предыдущее пять раз), затем хотя бы один пробел ( + принимает предыдущее одно или еще раз), а затем только буквы до конца строки.
  • позаботьтесь о том, как вы цитируете свои аргументы в grep. ` очень отличается от ' или " .

Вы можете попытаться найти строки, содержащие только два слова, если попытаетесь найти строки, содержащие только один пробел:

grep -E '^[^ ]+ [^ ]+'

Если вы хотите сопоставить что-то в нескольких строках, я не уверен, что grep может это сделать. Вы можете попробовать сделать это с помощью sed который может загружать следующие строки в пространство шаблонов с помощью N , а затем сопоставлять их с этой конкатенацией (посмотрите man sed , если это вам подходит). (Или perl , я думаю, он может соответствовать многострочным шаблонам, но я не знаю как.)

4
31.01.2019, 18:20
1 ответ

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

cf () { cat /path/to/f1 /path/to/f2 /path/to/f3; }

Он не будет действовать как файл, но вы можете использовать подстановку процесса, чтобы подделать его:

wc -l < <(cf)

Или в примере wc -lможет быть проще просто:

cf | wc -l
1
27.01.2020, 21:01

Теги

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