我的任务是使用sed交换文件中的第二列和第四列
Filesystem Size Used Avail Use% Mounted on
rootfs 583G 380G 203G 66% /
devtmpfs 1.9G 252K 1.9G 1% /dev
tmpfs 2.0G 2.5M 1.9G 1% /dev/shm
/dev/sda1 583G 380G 203G 66% /我的sed脚本如下所示:
#!/bin/sed -f
s/\(.*\)\s\+\(.*\)\s\+\(.*\)\s\+\(.*\)\s\+\(.*\)\s\+\(.*\)/\1 \3 \4 \2 \5 \6/g这是行不通的,我也搞不懂为什么。有人能帮帮我吗?谢谢!
发布于 2017-04-05 13:35:50
$ sed -E 's/^(\S+\s+)(\S+\s+)(\S+\s+)(\S+\s+)/\1\4\3\2/' ip.txt
Filesystem Avail Used Size Use% Mounted on
rootfs 203G 380G 583G 66% /
devtmpfs 1.9G 252K 1.9G 1% /dev
tmpfs 1.9G 2.5M 2.0G 1% /dev/shm
/dev/sda1 203G 380G 583G 66% /-E使用ERE,一些sed版本需要-r选项^启动(\S+\s+)定义了一个列-非空格字符,然后定义了空格字符。
https://stackoverflow.com/questions/43232051
复制相似问题