Appending One File to the Second Until End of File

Я не так хорошо знаком с SuSE, но на других неисправностях можно использовать команду service для остановки/запуска/перезапуска служб. Возможно, что-то подобное могло бы сделать это:

$ sudo service dnsmasq restart
-121--186837-

Очевидно, что он выключает ширину вашего терминала. При правильном размере клеммы можно получить hexedit для отображения 8 столбцов вместо 9.

В примере

00000000   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................................
00000020   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................................
00000040   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................................
00000060   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................................
00000080   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................................
000000A0   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................................
000000C0   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................................
000000E0   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................................
00000100   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................................
00000120   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................................
00000140   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................................
00000160   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................................
00000180   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................................
000001A0   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................................
000001C0   01 00 EE FE  FF FF 01 00  00 00 AF 32  CF 1D 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ...........2....................
000001E0   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 55 AA  ..............................U.
00000200
00000220
00000240
00000260
00000280

I ширина указанного выше терминала набора до 151x55.

$ resize
COLUMNS=151;
LINES=55;
export COLUMNS LINES;
-121--186850-

Последняя возможность включает имена входа пользователей с предыдущих перезагрузок. Таким образом, после последней перезагрузки пользователи будут печататься только следующим образом:

last | awk 'NR==1,$1=="reboot"{if ($1 ~ /cfs264/ ) { count+=1; }}END{ print count; }'

Первая часть команды awk определяет диапазон - начиная с первой строки и до тех пор, пока первый столбец не будет перезагружен.

0
25.08.2015, 11:52
5 ответов

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

$ awk -v n=$(cat file1) '{print $0,n}' file2
1 2 3 12
4 5 6 12
7 8 9 12

На csh / tcsh попробуйте:

awk -v n=`cat file1` '{print $0,n}' file2

Как это работает

  • -vn = $ (cat file1)

    Это присваивает содержимое file1 переменной awk n .

  • print $ 0, n

    Это печатает каждую строку, за которой следует n .

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

$ sed '1{h;d}; G;s/\n/ /' file1 file2
1 2 3 12
4 5 6 12
7 8 9 12

Как это работает

  • 1 {h; d}

    Первая прочитанная строка сохраняется в удерживаемом пространстве, а затем удаляется из этого пространства шаблонов (чтобы не печатать).

  • G; s / \ n / /

    Для всех последующих строк мы используем команду get, G . Это добавляет к пространству шаблонов новую строку и удерживаемое пространство. Затем мы заменяем эту новую строку пробелом.

2
28.01.2020, 02:15

Это должно сработать (в этом случае обновляется файл2, если вы этого не хотите, удалите флаг -i)

   sed -i "s/.*/& $(cat file1)/" file2
0
28.01.2020, 02:15

Для любителей sed - читать file1 для каждой строки в file2 это не очень хорошая идея. Намного лучше использовать переменную:

my_var=$(<file1) ; sed "s/$/ $my_var/" file2

или более безопасную

read -r my_var <file1 ; sed "s/$/ $my_var/" file2
0
28.01.2020, 02:15

Другой awk :

$ awk 'BEGIN{getline l <"file1"};{print $0, l}' file2
1 2 3 12
4 5 6 12
7 8 9 12
  • Блок BEGIN был выполнен первым перед чтением входного файла. Первая строка в file1 была получена с помощью функции getline () , сохраненной в переменной l
  • . В каждой строке file2 мы печатаем ее. content $ 0 вместе с l , разделенными OFS , который по умолчанию является пробелом.
4
28.01.2020, 02:15
$ sed -e "s/ *\$/ $(cat file1)/" file2
1 2 3 12
4 5 6 12
7 8 9 12
0
28.01.2020, 02:15

Теги

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