Извлечь все поля, кроме последнего, в Linux

Чтобы извлечь все поля, кроме последнего, из строки текста в 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/'захватывает все символы до последнего пробела и заменяет всю строку захваченными символами.