САС заменить индексированное поле - PullRequest
0 голосов
/ 03 марта 2019

Можно ли заменить поле в строке с разделителями, обращаясь к нему по его позиции?

aaa;bbb;ccc;ddd;sdfsfsdfsf;2324234234;dfdffdf;

Заменить поле 5 чем-либо.


Here is my solution:

To replace a field NN+1 with BLAH in a semicolon delimited string:

    sed 's/\(\([^;]\+;\)\{NN\}\)[^;]\+;\(.*\)/\1BLAH;\3/'

for the PCRE variant:

    sed -r s/(([^;]*;){NN})[^;]*;(.*)/\1BLAH;\3/g

Thanks!

Ответы [ 3 ]

0 голосов
/ 03 марта 2019

Это может работать для вас (GNU sed):

sed 's/[^;]*/something/5' file
0 голосов
/ 29 апреля 2019

Вот мое решение:

Заменить поле NN + 1 на BLAH в строке с точкой с запятой:

sed 's/\(\([^;]\+;\)\{NN\}\)[^;]\+;\(.*\)/\1BLAH;\3/'

для варианта PCRE:

sed -r s/(([^;]*;){NN})[^;]*;(.*)/\1BLAH;\3/g

Спасибо!

0 голосов
/ 03 марта 2019

не седь .. но ..

awk 'BEGIN{FS=OFS=";"} {$5="something"; print $0}' input.txt

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...