символ шляпы ^ в аргументе grep

Это можно легко сделать с помощью GNU awk с помощью его функций времени ( mktime и strftime ), но sed тоже может это сделать

sed '
    /^[0-9]/{                         #for last field with date
        y|-|/|
        s/^/date +"%B %d, %Y" -d /e   #reformat string by date
        b                             #go to end (print)    
    }
    s/\(.*\)\s/\1\n/                  #separate last field
    P                                 #print string without last field
    D                                 #operate just last field from start
    ' original.file | 
paste - - > new.file
1
25.11.2016, 01:22
2 ответа

Это буквальное значение ^ . В этом случае он передается в egrep , который принимает расширенные регулярные выражения, своего рода способ указания шаблона для сопоставления в данной строке (что-то вроде подстановки / подстановочных знаков, но гораздо более мощного). ^ просто означает «Это должно быть в начале строки / строки». Таким образом, в этом случае он будет соответствовать каждой строке в / etc / passwd, которая начинается с содержимого переменной «username».

(Обратите внимание, здесь есть потенциальная ошибка, потому что, если есть user rich и richard, ввод имени пользователя rich также будет соответствовать richard.)

3
27.01.2020, 23:34

Это часть регулярного выражения и означает «в начале строки».

Хороший список регулярных выражений можно найти в grymoire .

0
27.01.2020, 23:34

Теги

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