我需要搜索没有代码字符的反斜杠的组合,如果找到,我需要删除反斜杠。我知道如下所示的替换功能,但是我不知道如何删除字符。
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
答案 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
>