Как убрать 0 из второго столбца - PullRequest
0 голосов
/ 29 октября 2018

У меня есть файл, который выглядит следующим образом:

k141_173024,001
k141_173071,002
k141_173527,021
k141_173652,034
k141_173724,041
...

Как мне удалить 0 из каждой строки второго поля?
Желаемый результат:

k141_173024,1
k141_173071,2
k141_173527,21
k141_173652,34
k141_173724,41
...

То, что я связал, было

cut -f 2 -d ',' file |  awk '{print $1 + 0} > file2

cut -f 1 -d ',' file > file1

paste file1 file2 > final_file

Это был неэффективный способ отредактировать его.
Спасибо.

Ответы [ 5 ]

0 голосов
/ 29 октября 2018

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

sed 's/,0\+/,/' file

Это удаляет начальные нули из второго столбца, заменяя запятую, за которой следуют один или несколько нулей, запятая.

P.S. Я полагаю, что ОП не означало удалять нули, являющиеся частью числа.

0 голосов
/ 29 октября 2018

Если после запятой (,001 до ,1, но ,010 до ,10, это только нули; это не удаление 0 из второго столбца , но в примере четко не видно требование), вы можете заменить запятую и нули на другую запятую:

$ awk '{gsub(/,0+/,",")}1' file
k141_173024,1
k141_173071,2
k141_173527,21
k141_173652,34
k141_173724,41
0 голосов
/ 29 октября 2018

Если второе поле является числом, вы можете сделать это, чтобы удалить начальные нули:

awk 'BEGIN{FS=OFS=","} {print $1 OFS int($2)}' file

Согласно предложению @ Inian, это может быть еще более упрощено до:

awk -F, -v OFS=, '{$2=int($2)}1' file
0 голосов
/ 29 октября 2018
awk 'BEGIN{FS=OFS=","} {print $1 OFS $2+0}' Input.txt 

Force to Integer value путем добавления 0

0 голосов
/ 29 октября 2018

Не могли бы вы попробовать следующее.

awk 'BEGIN{FS=OFS=","} {gsub(/0/,"",$2)}1' Input_file

РЕДАКТИРОВАТЬ: Чтобы удалить только начальные нули, попробуйте следующее.

awk 'BEGIN{FS=OFS=","} {sub(/^0+/,"",$2)}1'  Input_file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...