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

Вместо этого используйте безопасное удаление.

sudo apt-get install secure-delete
srm -r pathname

Готово. Безопасное удаление гораздо более параноидально, чем shred, используя 38 проходов вместо 3. Для быстрого одиночного прохода используйте

srm -rfll pathname

fll, чтобы получить менее случайный генератор данных, и только один проход.

.
1
23.08.2017, 04:05
5 ответов

paste также может:

edited

This printing the first line again. Воспользовавшись отсутствием кавычек, пробелы в трейлинге не показывают:

$ 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

original

$ -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
1
27.01.2020, 23:28

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

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

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

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

1
27.01.2020, 23:28

Можно использовать sed, как я думаю:

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

$ 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
1
27.01.2020, 23:28

, используя 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.

0
27.01.2020, 23:28

Можно также попробовать эту команду 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-й строки.

0
27.01.2020, 23:28

Теги

Похожие вопросы