LINUX.ORG.RU

История изменений

Исправление AITap, (текущая версия) :

$ cat test
ID1  Name1   Param1   Num11  Num12  Num13 ... Num1N  Blabla1
IDX    val     val3     va4   val5  ssss6 ... 88888  BlaBla1
IDK  NameK   ParamK   NumK1  NumK2  NumK3 ... NumKN  Blabla1
$ file test
test: ASCII text, with CRLF line terminators
$ PERLIO=:unix:crlf perl -lapse'if($F[0] eq $search){@_=split/(\s+)/,$_; $_[2*($index-1)]=$replace; $_=join"",@_}' -- -index=8 -search=IDX -replace=VALUE test
ID1  Name1   Param1   Num11  Num12  Num13 ... Num1N  Blabla1
IDX    val     val3     va4   val5  ssss6 ... VALUE  BlaBla1
IDK  NameK   ParamK   NumK1  NumK2  NumK3 ... NumKN  Blabla1
$ PERLIO=:unix:crlf perl -lapse'if($F[0] eq $search){@_=split/(\s+)/,$_; $_[2*($index-1)]=$replace; $_=join"",@_}' -- -index=8 -search=IDX -replace=VALUE test | file -
/dev/stdin: ASCII text, with CRLF line terminators

Бонус: можно добавить параметр -i.bak (до --) и получить редактирование файла на месте.

Исправление AITap, :

$ cat test
ID1  Name1   Param1   Num11  Num12  Num13 ... Num1N  Blabla1
IDX    val     val3     va4   val5  ssss6 ... 88888  BlaBla1
IDK  NameK   ParamK   NumK1  NumK2  NumK3 ... NumKN  Blabla1
$ file test
test: ASCII text, with CRLF line terminators
$ PERLIO=:unix:crlf perl -lapse'if($F[0] eq $search){@_=split/(\s+)/,$_; $_[2*($index-1)]=$replace; $_=join"",@_}' -- -index=8 -search=IDX -replace=VALUE < test
ID1  Name1   Param1   Num11  Num12  Num13 ... Num1N  Blabla1
IDX    val     val3     va4   val5  ssss6 ... VALUE  BlaBla1
IDK  NameK   ParamK   NumK1  NumK2  NumK3 ... NumKN  Blabla1
$ PERLIO=:unix:crlf perl -lapse'if($F[0] eq $search){@_=split/(\s+)/,$_; $_[2*($index-1)]=$replace; $_=join"",@_}' -- -index=8 -search=IDX -replace=VALUE < test | file -
/dev/stdin: ASCII text, with CRLF line terminators

Бонус: можно добавить параметр -i.bak (до --) и получить редактирование файла на месте.

Исходная версия AITap, :

$ cat test
ID1  Name1   Param1   Num11  Num12  Num13 ... Num1N  Blabla1
IDX    val     val3     va4   val5  ssss6 ... 88888  BlaBla1
IDK  NameK   ParamK   NumK1  NumK2  NumK3 ... NumKN  Blabla1
$ file test
test: ASCII text, with CRLF line terminators
$ PERLIO=:unix:crlf perl -laps -e'if($F[0] eq $search){@_=split/(\s+)/,$_; $_[2*($index-1)]=$replace; $_=join"",@_}' --  -index=8 -search=IDX -replace=VALUE < test
ID1  Name1   Param1   Num11  Num12  Num13 ... Num1N  Blabla1
IDX    val     val3     va4   val5  ssss6 ... VALUE  BlaBla1
IDK  NameK   ParamK   NumK1  NumK2  NumK3 ... NumKN  Blabla1
$ PERLIO=:unix:crlf perl -laps -e'if($F[0] eq $search){@_=split/(\s+)/,$_; $_[2*($index-1)]=$replace; $_=join"",@_}' --  -index=8 -search=IDX -replace=VALUE < test | file -
/dev/stdin: ASCII text, with CRLF line terminators