Как заменить столбец в файле на другой столбец

Вам не разрешено изменять права доступа к файлу, если вы не являетесь его владельцем или пользователем root.

Когда вы используете sudo cat secret.txtи sudoзапрашивает пароль, обычно запрашивает ()ваш пароль.

Если вы укажете правильный пароль (ваш )и если sudoбыл настроен так, чтобы вы могли его использовать, то эта команда отобразит содержимое файла secret.txt. Если вам не разрешено использовать sudoи если вы не знаете пароль root, вы не сможете прочитать файл обычными средствами.

1
08.06.2021, 07:28
2 ответа

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

$ awk 'NR==FNR{ar[$9]=$12;next}
($1 in ar) {$2= ar[$1]}1'  file1 file2

В этой команде NR==FNR{ar[NR]=$12;next}означает, что это правило будет применяться к первому файлу только , поскольку FNRбудет установлено на ноль после файла1. В этом правиле создается массив arс содержимым поля 12, проиндексированным по полю 9($9)первого файла file1. nextпредотвращает дальнейшее действие на file1.

Выражение if ($1 in ar) $2=ar[$1]означает, что если первое поле($1)в найденных в индексах из ar, то второе поле file2заменяется на ar. Это связано с тем, что arпроиндексирован на $9 первого файла file1. Поскольку $2из file2теперь изменено, 1будет печатать новое $0.

А 1— это идиома awkдля печати.

2
28.07.2021, 11:26

Поскольку ваши файлы отсортированы, это можно сделать командой join:

join file1 file2 -1 9 -2 1 -o 2.1,1.12,2.3,2.4,2.5

Пояснение:

  • Два файла объединены в столбец #9 файла 1(-1опция )и столбец #1 файла 2(-2опция)
  • Опция вывода(-o)производится из полей 2.1 (1-й столбец файла 2 ), 1.12 (12-й столбец файла 1 )и т. д.
1
28.07.2021, 11:26

Теги

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