Скрипт для удаления слеша - PullRequest
       6

Скрипт для удаления слеша

0 голосов
/ 19 сентября 2018

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

awk -v RS='"[^"]*"' -v ORS= '{gsub(/\n/, " ", RT); print $0  RT}' file.csv

Это мне нужно сделать в CSV-файле.

Вход:

id,name,address
1,A,First Address
2,B, Second \,Address
3,c, ThiRd \" Address 

Выход:

id,name,address
1,A,First Address
2,B, Second ,Address
3,c, ThiRd \" Address 

Пример ввода

id,name,address
1,A,F/,irst /Address
2,B, /Second /,Address
3,c, //ThiRd /" Address

В соответствии со сценарием, полученным ниже, вывод

id,name,address
1,A,First ddress
2,B, econd Address
3,c, ThiR/d \" Address

Вывод

id,name,address
1,A,F,irst Address
2,B, Second ,Address
3,c, ThiRd /" Address

Вид этого

\(?!") -> remove back slash

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

Используя perl, это может быть легко решено с помощью Negative lookahead.Я использовал ваш " Sample Input " в качестве своего ввода и получил требуемый вывод как в вашем " Output "

> cat input_file.dat
id,name,address
1,A,F/,irst /Address
2,B, /Second /,Address
3,c, //ThiRd /" Address
> perl -pe ' $_=~s#/(?!")##g ' input_file.dat
id,name,address
1,A,F,irst Address
2,B, Second ,Address
3,c, ThiRd /" Address
>
0 голосов
/ 19 сентября 2018

РЕДАКТИРОВАТЬ: Кажется, вы изменили слэш на \, поэтому добавьте это сейчас.

awk '{for(i=1;i<=NF;i++){if($i ~ /\\[^"]/){sub(/\\/,"",$i)}}} 1' Input_file

Ниже будет вывод кода при его запуске.

awk '{for(i=1;i<=NF;i++){if($i ~ /\\[^"]/){sub(/\\/,"",$i)}}} 1'  Input_file
id,name,address
1,A,First Address
2,B, Second ,Address
3,c, ThiRd \" Address

Если вы хотите удалить все вхождения /, используйте следующее. (Кажется, ваш вывод по-прежнему показывает 1 косую черту, поэтому упоминается только об этом)

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