我有一个大的(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