Используйте SED или AWK для перемещения строки в новый столбец и строку

У меня есть. CSV-файл с разделителем табуляции, и мне нужно переместить информацию строки заголовка в «новый» столбец в начале и указанное количество строк вниз. Я хотел бы использовать стандартные инструменты, которые я сейчас использую, например sed или awk но если другой инструмент / метод более уместен, я бы приветствовал это предложение. Заголовок изменяется на файл, поэтому мне нужно скопировать его, а не просто поместить строку «CAT» в соответствующую строку и столбец.

  CAT DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG 

Станет:

  CAT DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG CAT DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG 

5 Solutions collect form web for “Используйте SED или AWK для перемещения строки в новый столбец и строку”

paste также может сделать это:

отредактированный

Это снова печатает первую строку. Воспользовавшись отсутствием кавычек, конечные пробелы не отображаются:

 $ paste -d"\t" <(printf "\n\n\n%s" $(head -1 file)) file CAT DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG CAT DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG 

оригинал

 $ -d"\t" <(printf "\n\n\nCAT") file CAT DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG CAT DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG 

Для меня работает следующая команда sed:

 sed '1!s/^/\t/;4s/^/CAT/' 

Интерпретация:

На линиях, отличных от номера 1, замените начало строки на вкладку. На четвертой строке замените начало строки на строку CAT.

Вы можете использовать sed следующим образом:

  1. сохранить первую строку в пространстве hold
  2. добавьте дополнительную вкладку (столбец) из строки # 2 вперед (это сохраняет исходное выравнивание столбца заголовка)
  3. в указанной следующей строке (я использовал строку # 4 в примере ниже), поменяйте место hold в пространстве pattern , отрисуйте пробел от него и добавьте его в строку

 $ sed -e '1h' -e '2,$s/^/\t/' -e '4{x;s/[[:space:]]//g;G;s/\n//}' file CAT DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG CAT DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG 

Вы также можете попробовать эту команду awk.

 $ awk 'NR==1{var=$1} {sub (/^ /," ");} NR==4{ sub (/^ +/,""); $0=" "var" "$0}1' file CAT DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG CAT DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG DOG 

Он извлекает строку в первой строке, а затем добавляет ту же строку в начале строки 4.

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

 awk -v line=4 -F '^\t*|\t+' ' NR==1 { OFS="\t"; ins=$2 } NR!=line { print "","",$0 } NR==line { print "",ins,$0 }' file 

Это будет использовать первое непустое поле строки заголовка в качестве текста для вставки, поэтому он может иметь любой текст отдельно от закладки или новой строки. Разделитель полей настроен таким образом, что это всегда считывается как второе поле в awk .

  • используя Sed для поиска и замены строки внутри файла
  • Как удалить все вхождения списка слов из текстового файла?
  • Sed заменить алфавит на верхний регистр после периода
  • Изменить значение в таблице
  • sed заменяет только несколько регулярных выражений букв
  • Замена строк в файлах с содержимым файла
  • как совместить все между строкой и перед следующим пространством
  • Избавление от линии с идеальным совпадением (не подстрокой) с помощью sed
  • Sed: Заменить N первых вхождений персонажа
  • В `sed` как я могу поместить один символ« & »между символами в строке?
  • Объединение трех последовательных строк с заменой
  • Interesting Posts

    Неоконченный системный вызов, сообщенный strace

    О Clonezilla и как сохранить резервную копию

    Backticks не работают при инкапсулировании пути в кавычки

    Удалите все файлы отмены Vim во всех, кроме одного каталога

    Как назначить несколько фиксированных IP-адресов для одного домена?

    Переместить все файлы в подкаталоги, названные в честь начала имени файла.

    Диск занят 101% все время

    Как адрес ядра заменяет страницы памяти на swap partition \ file?

    ecryptfs, смонтированный через командную строку, что мне нужно сделать для резервного копирования?

    Какие пакеты Red Hat Enterprise Linux для CentOS?

    Процесс именования в скриптах инициализации

    Как написать файл с различными смещениями в раздел файловой системы с помощью команды dd

    Добавьте новые шаги пользователя для Oracle Linux 5

    ed: установите первую строку в качестве текущей строки по умолчанию

    Bash – как запустить команду после предыдущего?

    Linux и Unix - лучшая ОС в мире.