Чтобы извлечь все поля, кроме последнего, из строки текста в Linux, вы можете использовать команду cutвместе с опцией разделителя. Вот несколько методов с соответствующими примерами кода:
Метод 1: использование команды cutс разделителем в виде пробела
echo "field1 field2 field3 field4 field5" | rev | cut -d' ' -f2- | rev
Объяснение:
echo "field1 field2 field3 field4 field5"печатает строку ввода.revпереворачивает строку ввода.cut -d' ' -f2-задает разделитель в виде пробела и выбирает все поля, начиная со второго поля.revвозвращает строку вывода в исходный порядок.
Команда
Команда
Метод 2: использование команды awk
echo "field1 field2 field3 field4 field5" | awk '{for(i=1;i<NF;i++) printf("%s ",$i)}'
Объяснение:
echo "field1 field2 field3 field4 field5"печатает строку ввода.awk '{for(i=1;iвыполняет итерацию по каждому полю и печатает все поля, кроме последнего.
Метод 3: использование команды sed
echo "field1 field2 field3 field4 field5" | sed 's/\(.*\) .*/\1/'
Объяснение:
echo "field1 field2 field3 field4 field5"печатает строку ввода.sed 's/\(.*\).*/\1/'захватывает все символы до последнего пробела и заменяет всю строку захваченными символами.
ул>