Как добавить строку в файл с n-й строки и далее в сценарии оболочки? - PullRequest
0 голосов
/ 01 июля 2019

Я хочу добавить строку в файл в конце каждой строки, начиная со второй строки.

, так что это мой файл budget.txt

id,budget
d4385ff7-247f-407a-97c6-366d8128c6c7,
50548d0a-257c-44f5-b175-2e7efa53dc35,
e15965cf-ffc1-40ae-94c4-b450ab190233,
b9286b97-2575-4c98-bd24-1393d5309e76,

ожидаемый результат ниже.Я хочу добавить строку 'True', начиная со второй строки и далее в конце.

id,budget
d4385ff7-247f-407a-97c6-366d8128c6c7,True
50548d0a-257c-44f5-b175-2e7efa53dc35,True
e15965cf-ffc1-40ae-94c4-b450ab190233,True
b9286b97-2575-4c98-bd24-1393d5309e76,True

, что может быть самой короткой командой bash.Большое вам спасибо за любую помощь

1 Ответ

3 голосов
/ 01 июля 2019

Обязательно запустите dos2unix budget.txt для вашего файла перед запуском приведенных ниже команд, в общем случае .txt файлы создаются в Windows, поэтому имеют различное окончание строки.

awk 'NR>1{$0=$0"True"}1' file
id,budget
d4385ff7-247f-407a-97c6-366d8128c6c7,True
50548d0a-257c-44f5-b175-2e7efa53dc35,True
e15965cf-ffc1-40ae-94c4-b450ab190233,True
b9286b97-2575-4c98-bd24-1393d5309e76,True

Здесь NR - это номер записи, и по умолчанию awk запись совпадает со строкой. Поэтому, если вы сделаете NR>1, он скажет awk выполнить действие внутри {..} с номером строки больше 1.

Или используйте sed, здесь замените конец строки $ на True:

sed '2,$s/$/True/' file
id,budget
d4385ff7-247f-407a-97c6-366d8128c6c7,True
50548d0a-257c-44f5-b175-2e7efa53dc35,True
e15965cf-ffc1-40ae-94c4-b450ab190233,True
b9286b97-2575-4c98-bd24-1393d5309e76,True
...