如何从制表符分隔的文本文件中的列的字符串值的末尾删除反斜杠?

时间:2016-12-25 11:40:22

标签: text awk sed grep

我有一个标签分隔的文本文件,其中包含一些列。对于某些行,特定列的值(它是一个字符串)在其末尾有一个反斜杠,这会导致问题,而我想将这些数据导入PostgreSQL数据库。我想从拥有它的所有行的该列的字符串值的末尾删除该反斜杠。我怎么能这样做?

例如在此行中,您看到第二列末尾有反斜杠

    862B25B3    Making Large-Scale Nystr{\  making large scale nystr    2010    2010        international conference on machine learning    icml    465F7C62    19555

2 个答案:

答案 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