Grep заканчивают соответствие regex

Еще один общий инструмент командной строки был бы ed, который по умолчанию изменяет оперативные файлы и поэтому оставляет полномочия файла неизмененными (для получения дополнительной информации о ed посмотрите файлы Редактирования с текстовым редактором редактора из сценариев),

str='
foo bar \
bash 1 \
bash 2 \
bash 3 \
bash 4 \
baz
dude \
happy
xxx
vvv 1 \
vvv 2 \
CCC
'

# We are using (1,$)g/re/command-list and (.,.+1)j to join lines ending with a '\'
# ?? repeats the last regex search.
# replace ',p' with 'wq' to edit files in-place
# (using Bash and FreeBSD ed on Mac OS X)
cat <<-'EOF' | ed -s <(printf '%s' "$str")
H
,g/\\$/s///\
.,.+1j\
??s///\
.,.+1j
,p
EOF

0
14.04.2019, 12:16
3 ответа

Awk сделал бы это самым кратким:

system_profiler SPHardwareDataType | awk  -F': ' '/Memory:/{print $2}'
1
28.01.2020, 02:53
  • 1
    Не получает единицу измерения, в этом случае ГБ, который был желателен.. возможно, получение "от поля 2 до NF"? Как Вы записали бы это? –  Robottinosino 29.03.2013, 21:38
  • 2
    Не уверенный, таким образом, я просто отредактировал ответ для использования надлежащего-F параметра :) –  Dennis Kaarsemaker 29.03.2013, 21:46
  • 3
    Это является лучшим, я нашел где угодно.-F для включения и двоеточия и пространства уже обрезает остальную часть строки, сразу. Очень компактный, точно правильный.. КАК! –  Robottinosino 29.03.2013, 22:11

Это - все, в чем Вы действительно нуждаетесь для Perl один:

system_profiler SPHardwareDataType | perl -nle '/ry:\s*(.*)/ && print $1'

Некоторый другой выбор:

  • system_profiler SPHardwareDataType | /bin/grep Me | gawk '{print $2,$3}'

    Используя/bin/grep избавляет от необходимости --color=never. grep определяется как псевдоним к grep --color=auto в /etc/bash.bashrc (по крайней мере, это находится на большинстве дистрибутивов Linux и, я предполагаю на OSX).

  • system_profiler SPHardwareDataType | /bin/grep Me | /bin/egrep -o '[1-9]+.+'

    -o причины grep toprint только подобранные символы.

  • system_profiler SPHardwareDataType | tail -n 1 | cut -d ' ' -f 4,5

  • system_profiler SPHardwareDataType | tail -n 1 | sed 's/.*: //g'

0
28.01.2020, 02:53
system_profiler SPHardwareDataType | sed -n 's/^ *Memory: //p'

p вот флаг к s команда (как g), не p команда и средства печатают пространство шаблона, если замена происходит. Вам не нужно g здесь, так как шаблон может только соответствовать однажды.

0
28.01.2020, 02:53

Теги

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