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

Text 如何从以制表符分隔的文本文件中的列的字符串值末尾删除反斜杠?,text,awk,sed,grep,Text,Awk,Sed,Grep,我有一个选项卡分隔的文本文件,其中有一些列。对于某些行,作为特定列的字符串的值在其末尾有一个反斜杠,这会在我想将这些数据导入PostgreSQL数据库时导致问题。我想删除该列字符串值末尾的反斜杠,用于所有具有反斜杠的行。我该怎么做 例如,在您看到的此行中,第二列末尾有一个反斜杠 862B25B3 Making Large-Scale Nystr{\ making large scale nystr 2010 2010 international conf

我有一个选项卡分隔的文本文件,其中有一些列。对于某些行,作为特定列的字符串的值在其末尾有一个反斜杠,这会在我想将这些数据导入PostgreSQL数据库时导致问题。我想删除该列字符串值末尾的反斜杠,用于所有具有反斜杠的行。我该怎么做

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

    862B25B3    Making Large-Scale Nystr{\  making large scale nystr    2010    2010        international conference on machine learning    icml    465F7C62    19555
在awk中。使用sub在第二个$2制表符分隔的-F'\t'列末尾将尾随\替换为零:

如果\可能位于任何字段的末尾,则需要“for”循环它:

$ awk -F'\t' -v OFS='\t' '{for(i=1;i<=NF;i++)sub(/\\$/,"",$i)}1' foo
在awk中。使用sub在第二个$2制表符分隔的-F'\t'列末尾将尾随\替换为零:

如果\可能位于任何字段的末尾,则需要“for”循环它:

$ awk -F'\t' -v OFS='\t' '{for(i=1;i<=NF;i++)sub(/\\$/,"",$i)}1' foo

使用sed时,要删除制表符之前或行尾的反斜杠,请执行以下操作:

sed 's/\\\t/\t/g;s/\\$//' file

使用sed时,要删除制表符之前或行尾的反斜杠,请执行以下操作:

sed 's/\\\t/\t/g;s/\\$//' file

测试数据会很好。我添加了一个example@JamesBrown当我想粘贴一个示例时,它会忽略标签,将其包装在块引号或代码标签中。我正确地添加了一个示例@JamesBrownTest data会很好example@JamesBrown当我想粘贴一个示例时,它会忽略选项卡,将其包装在块引号或代码标记中。我添加了一个示例正确地说,@JamesBrownit似乎这个命令对选项卡有效。对文件运行此操作后,反斜杠已删除,但列之间的制表符也已删除!哦,是的,我的错。我没有将OFS设置为选项卡。似乎此命令对选项卡有效。对文件运行此操作后,反斜杠已删除,但列之间的制表符也已删除!哦,是的,我的错。我也没有将OFS设置为tabs。