powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Как сделать добавление к строке в shell-скрипт
21 сообщений из 21, страница 1 из 1
Как сделать добавление к строке в shell-скрипт
    #36602058
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа, есть файл:
Код: plaintext
1.
2.
3.
Header|Product Authorisation|20100331|2108|
106532|NEW STAR FIXED INTEREST UNIT TRUST||Authorised Unit Trust|Authorised|19880429|19880429|195747|N|NEWSTARFIXEDINTERESTUNITTRUST|20091119|
106574|LEGAL & GENERAL (BARCLAYS) 500 TRUST ||Authorised Unit Trust|Authorised|19880429|19880429|119273|N|LEGALGENERALBARCLAYS500TRUST|20091124|

Как написать шеловский скрипт чтобы в конец каждой строки за исключением первой (правда можно и в нее - я потом при загрузке ёё игнорирую) вставить дату "20100331" и символ "|"из первой строки чтобы вышло

Код: plaintext
1.
2.
3.
Header|Product Authorisation|20100331|2108|
106532|NEW STAR FIXED INTEREST UNIT TRUST||Authorised Unit Trust|Authorised|19880429|19880429|195747|N|NEWSTARFIXEDINTERESTUNITTRUST|20091119| 20100331| 
106574|LEGAL & GENERAL (BARCLAYS) 500 TRUST ||Authorised Unit Trust|Authorised|19880429|19880429|119273|N|LEGALGENERALBARCLAYS500TRUST|20091124| 20100331| 


Прошу заранее не бить - с шелом никогда дел до этого не имел
...
Рейтинг: 0 / 0
Как сделать добавление к строке в shell-скрипт
    #36602384
SerXX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shtock,

Где-то так.
Код: plaintext
awk -F\| '{if (NR==1) {date=$3; print $0} else {print $0 date "|"} }'
...
Рейтинг: 0 / 0
Как сделать добавление к строке в shell-скрипт
    #36602729
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По тексту наверное правильно выходит, но результат какой-то странный.
Исходный файл PRO001:
Код: plaintext
1.
2.
3.
4.
5.
6.
Header|Product Authorisation|20100331|2108|
106532|NEW STAR FIXED INTEREST UNIT TRUST||Authorised Unit Trust|Authorised|19880429|19880429|195747|N|NEWSTARFIXEDINTERESTUNITTRUST|20091119|
106574|LEGAL & GENERAL (BARCLAYS) 500 TRUST ||Authorised Unit Trust|Authorised|19880429|19880429|119273|N|LEGALGENERALBARCLAYS500TRUST|20091124|
517208|UBS (LUX) SICAV 3||SICAV|Recognised|20100329|20100329|517207|Y|UBSLUXSICAV3|20100317|
517258|LIONTRUST GLOBAL DYNAMIC FUND||Authorised Unit Trust|Authorised|20100303|20100303|172617|N|LIONTRUSTGLOBALDYNAMICFUND|20100310|
Footer|1945|

выполнил:
awk -F\| '{if (NR==1) {date=$3; print $0} else {print $0 date "|"} }' PRO001


получил на экране:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Header|Product Authorisation|20100331|2108|
106532|NEW STAR FIXED INTEREST UNIT TRUST||Authorised Unit Trust|Authorised|1988
20100331|0429|195747|N|NEWSTARFIXEDINTERESTUNITTRUST|20091119|
106574|LEGAL & GENERAL (BARCLAYS) 500 TRUST ||Authorised Unit Trust|Authorised|1
20100331|9880429|119273|N|LEGALGENERALBARCLAYS500TRUST|20091124|
517208|UBS (LUX) SICAV 3||SICAV|Recognised|20100329|20100329|517207|Y|UBSLUXSICA
20100331|17|
517258|LIONTRUST GLOBAL DYNAMIC FUND||Authorised Unit Trust|Authorised|20100303|
20100331|172617|N|LIONTRUSTGLOBALDYNAMICFUND|20100310|
20100331|45|

Последняя строка вообще например сперлась да и как-то в конце строк не заметил даты + как-то вообще по-другому выглядеть стало и даты в середину вставились.
...
Рейтинг: 0 / 0
Как сделать добавление к строке в shell-скрипт
    #36602977
SerXX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выводите в файл, а не на экран.
Так будет понятнее.
У Вас строка в экран не влезла => переносы строк.
...
Рейтинг: 0 / 0
Как сделать добавление к строке в shell-скрипт
    #36603223
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Походу у принт есть серьезный недостаток: он выводит дату на следующей строке а не в конец текущей. Можно ли этого избежать? Заранее спасибо.
...
Рейтинг: 0 / 0
Как сделать добавление к строке в shell-скрипт
    #36603259
SerXX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
cat ./file1 

Header|Product Authorisation| 20100331 | 2108 |
 106532 |NEW STAR FIXED INTEREST UNIT TRUST||Authorised Unit Trust|Authorised| 19880429 | 19880429 | 195747 |N|NEWSTARFIXEDINTERESTUNITTRUST| 20091119 |
 106574 |LEGAL & GENERAL (BARCLAYS)  500  TRUST ||Authorised Unit Trust|Authorised| 19880429 | 19880429 | 119273 |N|LEGALGENERALBARCLAYS500TRUST| 20091124 |
 517208 |UBS (LUX) SICAV  3 ||SICAV|Recognised| 20100329 | 20100329 | 517207 |Y|UBSLUXSICAV3| 20100317 |
 517258 |LIONTRUST GLOBAL DYNAMIC FUND||Authorised Unit Trust|Authorised| 20100303 | 20100303 | 172617 |N|LIONTRUSTGLOBALDYNAMICFUND| 20100310 |Footer| 1945 |

cat ./file1 |awk -F\| '{if (NR==1) {date=$3; print $0} else {print $0 date "|"} }' > file2

cat ./file2 

Header|Product Authorisation| 20100331 | 2108 |
 106532 |NEW STAR FIXED INTEREST UNIT TRUST||Authorised Unit Trust|Authorised| 19880429 | 19880429 | 195747 |N|NEWSTARFIXEDINTERESTUNITTRUST| 20091119 | 20100331 |
 106574 |LEGAL & GENERAL (BARCLAYS)  500  TRUST ||Authorised Unit Trust|Authorised| 19880429 | 19880429 | 119273 |N|LEGALGENERALBARCLAYS500TRUST| 20091124 | 20100331 |
 517208 |UBS (LUX) SICAV  3 ||SICAV|Recognised| 20100329 | 20100329 | 517207 |Y|UBSLUXSICAV3| 20100317 | 20100331 |
 517258 |LIONTRUST GLOBAL DYNAMIC FUND||Authorised Unit Trust|Authorised| 20100303 | 20100303 | 172617 |N|LIONTRUSTGLOBALDYNAMICFUND| 20100310 |Footer| 1945 | 20100331 |
...
Рейтинг: 0 / 0
Как сделать добавление к строке в shell-скрипт
    #36603268
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я чуть по-другому делал и не очень ясно в чём разница:
awk -F\| '{if (NR==1) {date=$3; print $0 >> "pr2.dat"} else {print $0 date "|" >> "pr2.dat"}}' pr.dat
...
Рейтинг: 0 / 0
Как сделать добавление к строке в shell-скрипт
    #36603281
SerXX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да нету разницы.
В обоих случаях результат одинаковый.
Во всяком случае у меня.
...
Рейтинг: 0 / 0
Как сделать добавление к строке в shell-скрипт
    #36603313
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странно, выходит так же и в случае применения Вашего примера:
Код: plaintext
1.
2.
3.
4.
5.
6.
Header|Product Authorisation|20100331|2108|
106532|NEW STAR FIXED INTEREST UNIT TRUST||Authorised Unit Trust|Authorised|19880429|19880429|195747|N|NEWSTARFIXEDINTERESTUNITTRUST|20091119|
20100331|106574|LEGAL & GENERAL (BARCLAYS) 500 TRUST ||Authorised Unit Trust|Authorised|19880429|19880429|119273|N|LEGALGENERALBARCLAYS500TRUST|20091124|
20100331|517208|UBS (LUX) SICAV 3||SICAV|Recognised|20100329|20100329|517207|Y|UBSLUXSICAV3|20100317|
20100331|517258|LIONTRUST GLOBAL DYNAMIC FUND||Authorised Unit Trust|Authorised|20100303|20100303|172617|N|LIONTRUSTGLOBALDYNAMICFUND|20100310|
20100331|
...
Рейтинг: 0 / 0
Как сделать добавление к строке в shell-скрипт
    #36603322
Alexey181
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
можно так, если при загрузке первую проигнорите
Код: plaintext
sed 's/|$/|20100331|/'
...
Рейтинг: 0 / 0
Как сделать добавление к строке в shell-скрипт
    #36603346
SerXX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wc -l ./pr2.dat
что покажет?
...
Рейтинг: 0 / 0
Как сделать добавление к строке в shell-скрипт
    #36603363
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
0 ./pr2.dat
...
Рейтинг: 0 / 0
Как сделать добавление к строке в shell-скрипт
    #36603387
SerXX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ладно, анализировать у Вас желания нет.
Перефразирую.
Открываете каталог где лежит pr.dat
Код: plaintext
1.
awk -F\| '{if (NR==1) {date=$3; print $0 >> "pr2.dat"} else {print $0 date "|" >> "pr2.dat"}}' ./pr.dat
wc -l ./pr2.dat
...
Рейтинг: 0 / 0
Как сделать добавление к строке в shell-скрипт
    #36603399
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не понял в чем проблема.
Код: plaintext
1.
2.
3.
4.
5.
$ nawk '{FS="|";if (NR==1) {date=$3; print $0} else {print $0 date "|"}}' testfile
Header|Product Authorisation| 20100331 | 2108 |
 106532 |NEW STAR FIXED INTEREST UNIT TRUST||Authorised Unit Trust|Authorised| 19880429 | 19880429 | 195747 |N|NEWSTARFIXEDINTERESTUNITTRUST| 20091119 | 20100331 |
 106574 |LEGAL & GENERAL (BARCLAYS)  500  TRUST ||Authorised Unit Trust|Authorised| 19880429 | 19880429 | 119273 |N|LEGALGENERALBARCLAYS500TRUST| 20091124 | 20100331 |

Но на всякий случай - gawk умеет не только print, но и printf :)
...Да, проблема теоретически может быть в разделителях строк входного файла. Есжличе - переменная RS должна помочь
...
Рейтинг: 0 / 0
Как сделать добавление к строке в shell-скрипт
    #36603409
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да дело не в том, есть желание или нет. Если бы не было, я бы не написал вариант команды для авка отличного от Вашего. ПРосто первый раз столкнувшись с чем-то в словиях того, что надо что-то срочно сделать неясно вообще что анализировать

Теперь результат таков:
Код: plaintext
1.
5 ./pr2.dat
...
Рейтинг: 0 / 0
Как сделать добавление к строке в shell-скрипт
    #36603436
SerXX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shtock,
ну а теперь смотрите сами.
5 ./pr2.dat - это количество строк в файле.
Посчитайте количество строк в том что Вы сюда скопировали.
Посчитайте сколько должно быть.
Посмотрите выше
SerXXУ Вас строка в экран не влезла => переносы строк.
И смотрите итоговый файл нормальным просмотрщиком.
...
Рейтинг: 0 / 0
Как сделать добавление к строке в shell-скрипт
    #36603439
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous,

не помогло даже так:
Код: plaintext
1.
awk -F\| '{ORS = "\n"}{if (NR==1) {date=$3; printf $0  >> "pr2.dat"} else  {printf $0 date "|" >> "pr2.dat"}}' pr.dat
...
Рейтинг: 0 / 0
Как сделать добавление к строке в shell-скрипт
    #36603448
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понял, сейчас найду просмотрщик.
...
Рейтинг: 0 / 0
Как сделать добавление к строке в shell-скрипт
    #36603481
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shtockprintf $0 date
Вообще-то printf - он и в awk printf, т.е. printf("%s%s",$0,date)
...
Рейтинг: 0 / 0
Как сделать добавление к строке в shell-скрипт
    #36603566
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Походу я поверил что дело в просмотрщике, но andrey спасибо
...
Рейтинг: 0 / 0
Как сделать добавление к строке в shell-скрипт
    #36604403
скелет
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ShtockДа дело не в том, есть желание или нет. Если бы не было, я бы не написал вариант команды для авка отличного от Вашего. ПРосто первый раз столкнувшись с чем-то в словиях того, что надо что-то срочно сделать неясно вообще что анализировать

Теперь результат таков:
Код: plaintext
1.
5 ./pr2.dat



ну так и о чём тут разговор на 20 постов? Всё у вас норм работает
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Как сделать добавление к строке в shell-скрипт
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]