Bash的方式来删除空格在一个列的大文件



我有一个大的(15gb)以制表符分隔的文本文件(例如'Test.csv'):

ID1         ID2         ID3                  ID4
Some text   Some text   Text to be cleared   Some text

问题是如何通过bash脚本(Mac OS X 10.10)删除列ID3中的所有空格。因此,结果应该如下:

ID1         ID2         ID3                  ID4
Some text   Some text   Texttobecleared   Some text

列分隔符为't'。

你应该能够做这样的事情

awk -F"t" -v OFS="t" '{gsub(" ", "", $3); print}' < file

file替换为文件路径

-F"t"表示在从输入中识别列时使用制表符作为分隔符。

-v OFS="t"表示使用制表符来分隔输出中的列。

gsub修改第3列$3,并将所有空格" "替换为空字符串

使用bash的内置命令:

while IFS=$'t' read id1 id2 id3 id4; do echo -e "$id1t$id2t${id3// /}t$id4"; done < file_original > file_new
输出:

<>之前Id1 id2 id3 id4一些文本一些文本文本被清除了一些文本

sed ':T;s/^(([^t]*t){2})([^t]*) /13/;tT' file

或使用GNU和-r

ssed -r ':T;s/^(([^t]*t){2})([^t]*) /13/;tT' file

相关内容

  • 没有找到相关文章

最新更新