我想知道如何用Linux交换文件的列(确切字符)(使用cut,awk,sed或任何你可以帮助我的东西)。 我已经看到如何交换整个表达式(使用分隔符)和整个单词。
示例:
128934
38 2008
用5:
交换第3列123984
3802 08
另一种问这个问题的方法是将每行的第3个字符与第5个字符交换。
答案 0 :(得分:2)
你可以用gawk,mawk,nawk和busybox awk这个非posix complient例子做到这一点:
awk -v FS='' -v OFS='' '{ t=$3; $3=$5; $5=t } 1' infile
输出:
123984
3802 08
答案 1 :(得分:1)
有点笨拙,用sed:
$ sed -E 's/^(..)(.)(.)(.)/\1\4\3\2/' infile
123984
3802 08
这将捕获四组中每一行的前五个字符,然后重新排列它们。 -E
只是为了方便;没有它,我们必须像\(.\)
中那样逃避括号。