Как удалить текст с начала каждой строки и вставить его в конец каждой строки в терминале

У меня длинный список чисел и значений, которые выглядят примерно так:

100 value1 value2 

В этом списке около 150 строк, и я хочу переместить каждый номер в конец значений, чтобы он выглядел так:

 value1 value2 100 

Я попытался использовать эту команду для выполнения задания:

 awk -F: '{print $2 $3 $1}' ~path/to/file.txt 

но он просто печатает все в файле

 100 value1 value2 101 value3 value4 102 value5 value6 

Пожалуйста помоги!

Заранее спасибо!

  • Сравнение двух файлов с использованием awk-языка
  • сравнить несколько файлов (более двух) с двумя разными столбцами
  • Сумма альтернативных значений в столбце с использованием команды sed или nawk
  • Поддержка AWK
  • Как grep / awk / sed для текста в журнале и отображать кусок с текстом?
  • Как получить строку X из строки file1 и Y из файла2 с помощью команды оболочки?
  • Извлечь ключевое слово из строки
  • Специальный символ AWK
  • 2 Solutions collect form web for “Как удалить текст с начала каждой строки и вставить его в конец каждой строки в терминале”

    На самом деле ты был близок. 🙂

    Попробуйте использовать: awk '{print $2,$3,$1}' filename > output_file

    И проверьте его с помощью: cat output_file

    Использование awk :

     awk '{ num = $1;$1=""; sub(/^ /,""); print $0,num; }' ~path/to/file.txt 

    Это позволяет использовать любое количество столбцов. Объяснение:

    • Сохраните первый столбец в переменной «num», а затем установите его в ничто (т.е. «»)
    • Удалите лишнее пространство между первыми двумя столбцами (используя подпункт)
    • Распечатать
      • $ 0 – вся строка
      • "num" исходный первый столбец

    Вы также можете использовать sed :

     sed 's/\([0-9]\+\) \(.*\)/\2 \1/' ~path/to/file.txt 
    Linux и Unix - лучшая ОС в мире.