linux - 如何使用 awk 交换和删除列而不获取换行符和空格?

标签 linux bash unix awk

例如,我有以下由“;”分隔的 .csv。
我需要交换 2 列和/或删除一些列。

col1row1;col2row1;col3row1
col1row2;col2row2;col3row2
col1row3;col2row3;col3row3
...

列号不固定,我需要交换的列可以不同。
我使用了 awk 'BEGIN {FS=";";OFS=";"} {print $3, $1}',但如果其中一个交换列是最后一个,它会添加换行符,例如< br/>

col3row1
;col1row1
col3row2
;col1row2
col3row3
;col1row3
...

或 smth 的空格,如 {print $2, $1, $3}

col2row1; col1row1 ;col3row1
col2row2; col1row2 ;col3row2
col2row3; col1row3 ;col3row3
...

最佳答案

您的输入文件包含 control-Ms。运行 dos2unix 或类似的程序来删除它们。

关于linux - 如何使用 awk 交换和删除列而不获取换行符和空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41203362/

相关文章:

bash - kubectl apply-ing时替换所有文件中的环境变量

linux - sed 在开头放置圆括号并在第 4 行结束

unix - Red Hat 上的 CuRL SSL 握手问题

database - 两台服务器 Postgres 数据库之间的同步

linux - 为什么 tcp_tw_reuse 默认关闭?

c++ - 当进程在 linux 下结束时如何得到通知?

bash - 搜索 'binary file matches' 。如何获得正常的grep输出?

bash - 如何从wget获取真实文件名

c# - 来自 C# 的 Unix 命令

linux - 在 Unix/Linux 中判断两个文件是否具有相同内容的最快方法?