Смотрение grep или egrep год располагается с 1965-1996

Именованный канал является частью файловой системы. Что-либо, что имеет имя файла, является частью файловой системы. Если это, оказывается, файловая система в персистентном устройстве хранения данных (т.е. на диске), то это переживает системную перезагрузку.

Запись файловой системы для именованного канала просто имеет имя, обычные метаданные (время, полномочия, и т.д.), и флаг, который говорит, “это - именованный канал”. Данные, которые проходят канал, не переходят к файловой системе. Но сам именованный канал находится в файловой системе.

3
15.10.2014, 23:10
4 ответа

Диапазоны дат и регекс не так уж и хороши. Если я правильно интерпретирую $ в вашем grep, то дата - это последнее поле в строке.

Попробуйте это:

awk '$NF >= 1965 && $NF <= 1996' filename

Если вы должны использовать grep, он становится более запутанным:

grep -E '196[5-9]|19[78][0-9]|199[0-6]$' filename
12
27.01.2020, 21:08

Следует отметить, что egrep позволяет учитывать 19, как например:

grep -E '19(6[5-9]|[78][0-9]|9[0-6])$' filename

, что можно считать более ясным.

2
27.01.2020, 21:08
$ (for i in {1900..2000}; do echo $i; done) | egrep '(196[5..9]|19[78][0-9]|199[0-6])'
1965
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
.
0
27.01.2020, 21:08

Использование стандартного синтаксиса grepдля извлечения строк, заканчивающихся любым номером подстроки в диапазоне от 1965 до 1996 включительно (это также аналогично попытке пользователя в вопросе):

grep -e '196[5-9]$' \
     -e '197[0-9]$' \
     -e '198[0-9]$' \
     -e '199[0-6]$'

При этом извлекаются строки, которые заканчиваются любым интересующим вас числом. Обратите внимание, что выражения, как правило, должны быть заключены в кавычки.

Во избежание сопоставления, например.231974(соответствует1974)в конце строки, вы можете вставить \<в начале каждого числа в шаблоне:

grep -e '\<196[5-9]$' \
     -e '\<197[0-9]$' \
     -e '\<198[0-9]$' \
     -e '\<199[0-6]$'

Это заставляет число быть словом, а не подстрокой какого-либо другого более длинного слова.

0
26.04.2021, 16:04

Теги

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