我有一个标签分隔的文本文件,其中包含一些列。对于某些行,特定列的值(它是一个字符串)在其末尾有一个反斜杠,这会导致问题,而我想将这些数据导入PostgreSQL数据库。我想从拥有它的所有行的该列的字符串值的末尾删除该反斜杠。我怎么能这样做?
例如在此行中,您看到第二列末尾有反斜杠
862B25B3 Making Large-Scale Nystr{\ making large scale nystr 2010 2010 international conference on machine learning icml 465F7C62 19555
答案 0 :(得分:3)
使用sed,在标签前或行尾删除反斜杠:
sed 's/\\\t/\t/g;s/\\$//' file
答案 1 :(得分:2)
在awk中。使用sub
在第二个(\
)制表符分隔(""
)列的末尾将$2
替换为-F'\t'
(无):
$ awk -F'\t' -v OFS='\t' 'sub(/\\$/,"",$2)||1' foo
如果\
可能在任何字段的末尾,则需要'for'循环它:
$ awk -F'\t' -v OFS='\t' '{for(i=1;i<=NF;i++)sub(/\\$/,"",$i)}1' foo