如何去除第5列(fun列)单词间空格以实现column -t完美对齐?
解决第5列去除所有空格以适配
column -t对齐的问题 针对你需要去除第5列(fun列)所有空格的需求,这里提供两种实用的解决方案,比你之前尝试的sed命令更彻底:
方法一:用awk处理(最直观易读)
awk天生擅长按列操作,直接对第5列执行全局空格替换即可:
awk '{gsub(/ /, "", $5); print}' your_input_file.txt | column -t
解释:
gsub(/ /, "", $5):把第5列中的所有空格(/ /)替换为空字符串,gsub是全局替换,会处理列内所有匹配项- 处理后的行通过管道传给
column -t,就能实现完美的列对齐
方法二:用sed循环替换(纯sed方案)
如果偏好使用sed,可以通过循环替换的方式,把第5列内的所有空格逐一移除:
sed -E ':loop; s/^(([^ ]+ +){4})([^ ]*) ([^ ]*)(.*)$/\1\3\4\5/; t loop' your_input_file.txt | column -t
解释:
:loop:定义一个循环标签,方便后续重复执行替换^(([^ ]+ +){4}):匹配前4列的内容(每列是[^ ]+非空格字符加空格分隔)([^ ]*) ([^ ]*):匹配第5列中被空格分隔的两部分,替换时把空格去掉,合并为\3\4t loop:如果本次替换成功(说明第5列还有空格),就跳回loop标签继续执行,直到第5列没有空格为止
处理后效果示例
处理后的输出会变成这样(第5列无空格):
AI20 A1,A2 Z comb ((A1A2)) 2 IA2 A1,A2,A3 Z comb ((!A1A2)A3) 3 XOR A1,A2,B1 Z comb (((A1A2)B1) 3 IAD A1,A2,A3 Z comb (!((A1A2)A3)) 3 INV I1 ZN comb (!I1) 1 BUF A1,A2,A3,B1 Z comb (!(((A1A2)A3)B1)) 4
再经过column -t处理后,所有列会整齐对齐。
内容的提问来源于stack exchange,提问作者Shreya
相关产品推荐
相关产品推荐

