删除斜杠的脚本

时间:2018-09-19 06:20:08

标签: shell unix awk

我需要搜索没有代码字符的反斜杠的组合,如果找到,我需要删除反斜杠。我知道如下所示的替换功能,但是我不知道如何删除字符。

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 :(得分:2)

编辑: :您似乎已将斜杠更改为\,所以请立即添加。

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

答案 1 :(得分:0)

使用perl,可以很容易地通过负向超前解决。我使用您的“ 样本输入”作为输入,并获得了您的“ 输出

中所需的输出
> 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
>