Если вы вообще можете загрузиться в свою систему, вы можете удалить последнюю версию ядра. Ядра — это пакеты. Следующая команда даст вам список установленных в вашей системе:
dpkg -l | grep linux-image
Последней версией будет форма linux-image-<version number>-generic
с самым высоким номером версии. Чтобы удалить его, выполните следующее как root:
apt remove linux-image-<version number>-generic
Наконец, чтобы обновить grub, чтобы он знал, какие версии ядра доступны для загрузки, выполните следующее от имени пользователя root:
update-grub
У @pLumo есть абсолютно правильный ответ. Если по какой-либо причине вы хотите использовать awk
и расширение встроенных параметров bash, при этом все время слегка запутываясь...
LINE_COUNTER=0
while read line; do
COUNT_SEP="${line//[^,]}"
for col in $(seq 2 $((${#COUNT_SEP}+1))); do
LINE_COUNTER=$(($LINE_COUNTER+1))
COLUMN=$(echo "${line}" | awk -v variable="${col}" -F, '{ print $variable }')
if [ $LINE_COUNTER -eq 1 ]
then
echo "${COLUMN}" > /tmp/splitCSV
else
echo "${COLUMN}" >> /tmp/splitCSV
fi
done
while read splitCol; do
echo "${splitCol}" | awk -F'/data/' '{ print $2 }' | awk -F'/' '{ print $1 }'
done < /tmp/splitCSV
done < test.csv
Используйтеgrep
:
с ПКРЭ:
grep -Po '/data/\K[^/]*'
если это недоступно:
grep -o '/data/[^/]*' | cut -d'/' -f3
Просто чтобы добавить параметр, имея в виду, что существует только один шаблон, который соответствует трем символам между косой чертой, с sed
иgrep
:
grep -o "/.../" foo | sed 's;/;;g' file
Выход:
sdb
sdc
sdd
sde
sdf
Мы можем выбрать из следующих:
awk -F/ '
BEGIN { OFS = RS }
{
N = split($0, a, /\//)
$0 = ""
for ( i=j=1; i<N; i++ )
if ( a[i] == "data" )
$(j++) = a[++i]
}N>1' file.csv
perl -F/ -lane '
shift(@F) eq q(data) and print(shift(@F))
while(@F && m{/data/});
' file.csv
perl -lne 'print for m{/data/([^/,]+)}g' file.csv
sed -re '
/\n/{P;D;}
s:/data/([^/,]+):\n\1\n:
D
' file.csv
Для ввода выше будет работать команда ниже
perl -pne "s/,/\n/g" filename|awk -F '/data/' '{gsub("/.*","",$2);print $2}'
выход
sdb
sdc
sdd
sde
sdf
Это работает для меня с awk
awk -F'/' '{for(i=1;i<=NF;i++) if($i=="data") print $(i+1)}' <file>
1:-F определяет разделитель полей как /
2 :цикл для каждого поля в каждой строке
3 :если поле равно "данные", вывести следующее поле