получить 2 текста из этой строки

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

Однако вы можете попробовать что-то вроде этого (предупреждение :Я не проверял):

MYDEVICE=/dev/foo
MYDEVLABEL=$(e2label $MYDEVICE)
mkdir -p /media/$USER/$MYDEVLABEL
mount $MYDEVICE /media/$USER/$MYDEVLABEL

Не забудьте добавить необходимые параметры в команду mount.

-1
23.08.2019, 18:48
5 ответов

Для этого можно просто использовать awk:

$ awk 'gsub(/[][]/,""){print $1,$2,"|",$NF}' file
23/08/2019 09:30:00 | 90

gsub(/[][]/,"")заменит все вхождения либо [, либо ](, это класс символов :[ ], состоящий из двух символов ]и [, поэтому становится[ ][ ])в текущей строке, а затем, если это было успешно, вы печатаете 1-е поле (дату ), второе поле (время )и последнее поле (NF )продолжительность.

1
28.01.2020, 05:12

Я полагаю, вы хотите проанализировать лог-файл с большим количеством строк? Используя манипуляции с подстроками -:

$ cat get2texts.sh:

#!/bin/bash
logfile="$1"
IFS=']'
while read -r one two three four five junk; do
  one="${one#[}"
  one="${one% *}"
  five="${five/*,/ | }"
  echo "$one $five"
done < "$logfile" \
| tr -s ' ' ' '

Результат:

$ get2texts.sh testfile
23/08/2019 09:30:00 | duraci???n: 90
0
28.01.2020, 05:12

Если вы настроите FS разумно, вам может сойти с рук, например.:

awk '{ print $2, $3, "| " $(NF-1) }' FS='[] []+' infile

Выход:

23/08/2019 09:30:00 | 90
0
28.01.2020, 05:12
awk '{print $1,$2,$NF}' filename| sed "s/\[//g"|sed "s/\]//g"| awk '{$NF=" | "$NF;print $0}'

выход

23/08/2019 09:30:00  | 90
-1
28.01.2020, 05:12

Чтобы получить дату и продолжительность в строках, содержащих duraci???n:с помощьюsed:

$ sed -n 's/^\[\([^ ]* [^ ]*\).*\(duraci???n:.*\)\]$/\1 | \2/p' logfile
23/08/2019 09:30:00 | duraci???n: 90

или

$ sed -n 's/^\[\([^ ]* [^ ]*\).*duraci???n: \(.*\)\]$/\1 | \2/p' logfile
23/08/2019 09:30:00 | 90


Пояснение к первой команде:

  • sed -nбыть тихим (только совпадающие части печатаются с флагом p)
  • 's/заменитель
  • ^\[соответствует [в начале строки
  • \(начать первую группу
  • [^ ]* [^ ]*соответствует дате и времени (любые символы без пробела, за которыми следует пробел, за которым следуют любые символы без пробела)
  • \)конец первой группы
  • .*соответствует любым символам
  • \(начать вторую группу
  • duraci???n:.*соответствует duraci???n:.*, за которым следуют любые символы
  • \)конец второй группы
  • \]$соответствует ]в конце строки
  • /\1 | \2/заменить на первую группу, |и вторую группу
  • p'распечатать совпадения
0
28.01.2020, 05:12

Теги

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