Использование awk или sed для удаления первого символа из четвертого и пятого столбца в .csv - PullRequest
0 голосов
/ 03 марта 2020

У меня есть файл .csv со следующими значениями:

N0012,17/01/20,13:31:42,N52:01:58,E004:19:00

Мне нужно удалить N и E из четвертого и пятого столбца. Таким образом, вывод:

N0012,17/01/20,13:31:42,52:01:58,004:19:00

Я пытался использовать

awk '{gsub(/\N|\;/,$4)}1' file

, но он также удаляет кулак N из первого столбца.

Так что мне нужна помощь с этим. Заранее спасибо.

Ответы [ 3 ]

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

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

sed -E 's/^(([^,]*,){3})N/\1/;s/^(([^,]*,){4})E/\1/' file

Если за первыми тремя полями следует N, замените совпадение на первые три поля.

Если за первыми четырьмя полями следует E замените совпадение на первые четыре поля.

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

Учитывая ваш введенный пример ввода, это все, что вам нужно:

$ sed 's/,[NE]/,/g' file
N0012,17/01/20,13:31:42,52:01:58,004:19:00

или, если вы предпочитаете awk:

$ awk '{gsub(/,[NE]/,",")}1' file
N0012,17/01/20,13:31:42,52:01:58,004:19:00
0 голосов
/ 03 марта 2020

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

awk 'BEGIN{FS=OFS=","} {sub(/^N/,"",$4);sub(/^E/,"",$5)} 1' Input_file

Если OP хочет заменить любую букву (не только N или E), то попробуйте выполнить следующее.

awk 'BEGIN{FS=OFS=","} {sub(/^[[:alpha:]]/,"",$4);sub(/^[[:alpha:]]/,"",$5)} 1' Input_file

ИЛИ

awk 'BEGIN{FS=OFS=","} {sub(/^./,"",$4);sub(/^./,"",$5)} 1' Input_file

Объяснение: Добавление подробного объяснения приведенного выше кода здесь.

awk '                ##Starting awk program from here.
BEGIN{               ##Starting BEGIN section of this awk program from here.
  FS=OFS=","         ##Setting field separator and output field separator as comma here.
}
{
  sub(/^N/,"",$4)    ##Using substitute function of awk to substitute starting N in column 4th here.
  sub(/^E/,"",$5)    ##Using substitute function of awk to substitute starting N in column 5th here.
}
1                    ##Mentioning 1 will print edited/non-edited line here.
' Input_file         ##Mentioning Input_file name here.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...