Это не самое удачное решение, потому что вы оставляете на своей машине пустой каталог для метки каждого устройства, которое собираетесь монтировать.
Однако вы можете попробовать что-то вроде этого (предупреждение :Я не проверял):
MYDEVICE=/dev/foo
MYDEVLABEL=$(e2label $MYDEVICE)
mkdir -p /media/$USER/$MYDEVLABEL
mount $MYDEVICE /media/$USER/$MYDEVLABEL
Не забудьте добавить необходимые параметры в команду mount
.
Для этого можно просто использовать awk
:
$ awk 'gsub(/[][]/,""){print $1,$2,"|",$NF}' file
23/08/2019 09:30:00 | 90
gsub(/[][]/,"")
заменит все вхождения либо [
, либо ]
(, это класс символов :[ ]
, состоящий из двух символов ]
и [
, поэтому становится[ ][ ]
)в текущей строке, а затем, если это было успешно, вы печатаете 1-е поле (дату ), второе поле (время )и последнее поле (NF )продолжительность.
Я полагаю, вы хотите проанализировать лог-файл с большим количеством строк? Используя манипуляции с подстроками -:
$ 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
Если вы настроите FS разумно, вам может сойти с рук, например.:
awk '{ print $2, $3, "| " $(NF-1) }' FS='[] []+' infile
Выход:
23/08/2019 09:30:00 | 90
awk '{print $1,$2,$NF}' filename| sed "s/\[//g"|sed "s/\]//g"| awk '{$NF=" | "$NF;print $0}'
выход
23/08/2019 09:30:00 | 90
Чтобы получить дату и продолжительность в строках, содержащих 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'
распечатать совпадения