Потребность удалить - (Минус) знак в конце в числе из многих столбцов и вставить его на удаленных столбцах

Вы ищете

set display=lastline    " Show as much as possible of a wrapped last line, not just "@".

Поместите это в Ваш ~/.vimrc.

3
05.09.2014, 15:13
4 ответа

Сработало следующее: Было бы здорово узнать о любом другом решении awk или sed ...

perl -pe 's#(\d{1,}[.]\d{1,})(-)#$2$1#'g  file
1
27.01.2020, 21:23

То же, что и команда perl,

$ sed 's/\([0-9]\+\.[0-9]\+\)-/-\1/g' file
0.00,-70440.19,-18.31,0.00,-451.59,-13788.77,-44.19,-6289.29
-1.03,-39.24,-0.11,-16.96,0.00,-72377.70,0.00,-146673.67,-59.11,0.00

Другой однострочник perl,

$ perl -pe 's/([^,\n]*?)-/-\1/g' file
0.00,-70440.19,-18.31,0.00,-451.59,-13788.77,-44.19,-6289.29
-1.03,-39.24,-0.11,-16.96,0.00,-72377.70,0.00,-146673.67,-59.11,0.00
1
27.01.2020, 21:23

Другой perl

perl -F, -lane 'print join ",", map {(/-$/ && chop) . $_} @F' file
1
27.01.2020, 21:23

Вот несколько:

  1. Более короткий perl

     perl -pe 's / ([\ d.] +)  - / - файл $ 1 / g '
     
  2. (GNU) sed

     sed -r 's / ([0-9.] +) - / - \ 1 / g' файл
     
  3. Любой файл sed

     sed 's / \ ([0-9.] * \) - / - 1 \ 1 / g'
     
  4. Гок. Обратите внимание, что различные варианты awk не очень хороши для задач, связанных с захватом шаблонов. GNU awk (gawk) и другие могут это сделать, но вместо этого я бы использовал одно из вышеперечисленных решений.

     gawk -F, '{
      for (i = 1; i 

    Я уверен, что должен быть лучший способ сделать это с помощью awk, но приведенный выше будет работать, несмотря на то, что он уродлив и громоздок.

  5. Излишне сложный

     perl -pe 's / \ n / \ n \ n /;  с /, / \ п / г;  'файл |
      awk -F "-" '/ - / {printf "-";} {print $ 1}' |
      perl -000ne ​​'s / \ n ./,/ g; s / \ n \ n / \ n / g;  Распечатать'
     
0
27.01.2020, 21:23

Теги

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