скопировать несколько строк и вставить в конец другого текстового файла

Кажется, это работает:

awk 'NR==FNR { code[$2]=$1 } NR!=FNR {print; for( i=0; i<=NF; i++) { printf( "%s ", code[$i] ) }; printf "\n" }' input2 input1

Блок NR==FNRработает только с первым файлом, указанным (, в котором общее количество обработанных записей равно общему количеству на данный момент ), и заполняет массив, используемый для вывода позже.

Блок NR!=FNRработает только с последующим файлом и сначала выводит заданную строку ввода, а затем проходит через нее и использует каждое значение в качестве нижнего индекса поиска в массиве, чтобы определить, следует ли выводить vили c.

После этого повторяющегося ряда выводится новая строка.

-1
11.12.2019, 18:02
2 ответа

Если вы можете изменить сценарий, вы можете заставить его автоматически добавлять вывод в другой файл.

Просто добавьте {в отдельной строке перед вторым echo, а затем } >>arch.makeпосле последнегоecho:

#echo "Please add..."
{
echo ""
echo "INCFLAGS..."
# etc.
echo "FPPFLAGS..."
echo ""
} >>arch.make

Запуск, который будет добавлять результат команды echoв {... }в конец файла arch.makeкаждый раз, когда вы запускаете скрипт.

1
28.01.2020, 05:09

Неоднозначное копирование звука. В этом случае кажется, что вы хотите получить вывод из скрипта и другой команды и добавить в файл (, а не копировать содержимое файла в другой, верно? ). Что вам нужно, так это перенаправить вывод в файл. Основной синтаксис:

command --options arguments >> file.txt

но если у вас есть несколько команд для запуска, вы можете создать групповую команду (тип составной команды; см. man bash). При этом вы получите что-то вроде

{ command1 --options1 arguments1 ; command2 --options2 arguments2,... } >> file.txt

Вы можете использовать()вместо {} для охвата списка команд (что создает подоболочку (если это не имеет для вас смысла, читайте о envoirament im man bash).

Наконец, если вы хотите, чтобы вывод выводился как на экран (или в другое место ), так и в файл, используйте программу tee .

Надеюсь, я помог вам.

**PS :**упомянутая выше команда, конечно, может быть скриптом.

0
28.01.2020, 05:09

Теги

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