在以TAB分隔的文件linux中替换包含的字符串中的TAB



我有一个制表符分隔的txt文件,其中第三列包含封闭的字符串,该字符串可能也有制表符。由于这个额外的选项卡,我得到5列,当我尝试阅读这个选项卡分隔的文件。所以我想用空格代替标签。

下面是示例文件:

col1   col2   col3        col4  
1      abc    "pqr   xyz" asd  
2      asd    "lmn   pqr" aws  
3      abc    "asd"       lmn

我想要这样的输出

col1   col2   col3        col4  
1      abc    "pqr xyz"   asd  
2      asd    "lmn pqr"   aws  
3      abc    "asd"       lmn

这是我尝试过的

awk -F"t" '{ gsub("t","",$3); print $3 }' file.txt

之后,我得到以下输出

col3  
"pqr  
"lmn  
"asd"

请帮

有了GNU awk (gawk),您可以使用以下表达式:

gawk '{gsub("t"," ",$3)}1' OFS='t' FPAT='"[^"]*"|[^t]*' file

这里的关键是FPAT变量。它定义了字段的外观,而不仅仅是指定字段分隔符。

在本例中,字段可以是由双引号括起来的非双引号字符序列"[^"]*",也可以是由零个或多个非制表符组成的序列[^t]*。(0,以正确处理空字段)

由于我们首先指定了非引号字符的顺序,因此它具有优先级

相关内容

  • 没有找到相关文章

最新更新