데이터를 단어별로 열 정렬

데이터를 단어별로 열 정렬

주어진 단어를 기준으로 데이터를 좋은 열로 정렬하려면 어떻게 해야 합니까?

route -n예를 들어 다음 명령의 출력이 있습니다 .

default via 172.20.99.254 dev eth0 
87.33.17.71 dev tun0 scope link 
89.223.15.12 via 172.20.99.254 dev eth0 src 172.20.99.74 
172.20.9.0/24 dev eth0 proto kernel scope link src 172.20.99.74 
65.46.5.89 dev tun0 scope link 
192.168.11.0/24 dev tun0 scope link 
45.211.111.7 dev tun0 scope link 

dev해당 단어가 포함된 열이 dev정렬 되도록 단어별로 정렬하고 싶습니다 .

default via 172.20.99.254       dev eth0 
87.33.17.71                     dev tun0 scope link 
89.223.15.12 via 172.20.99.254  dev eth0 src 172.20.99.74 
172.20.9.0/24                   dev eth0 proto kernel scope link src 172.20.99.74 
65.46.5.89                      dev tun0 scope link 
192.168.11.0/24                 dev tun0 scope link 
45.211.111.7                    dev tun0 scope link 

탭이 1개 필요할 때도 있고 탭이 3개 필요할 때도 있기 때문에 순진하게 주먹 공백 문자를 탭으로 바꿀 수는 없습니다.

답변1

파일에 존재하지 않는다고 확신하는 문자를 명령에 대한 더미 구분 기호로 사용합니다 column. 예를 들면 다음과 같습니다.

$ sed 's/dev/@dev/' file | column -ts@
default via 172.20.99.254        dev eth0 
87.33.17.71                      dev tun0 scope link 
89.223.15.12 via 172.20.99.254   dev eth0 src 172.20.99.74 
172.20.9.0/24                    dev eth0 proto kernel scope link src 172.20.99.74 
65.46.5.89                       dev tun0 scope link 
192.168.11.0/24                  dev tun0 scope link 
45.211.111.7                     dev tun0 scope link 

-o와 함께 (출력 구분 기호 지정)을 사용할 수도 있으며 column, -o ""또는 -o " "동작을 사용해 볼 수도 있습니다.

또한 위의 내용은 sed첫 번째 항목만 대체하고 간단한 일치를 사용합니다. 주변 공간 일치와 같은 다른 경우에는 더 엄격한 일치가 필요할 수도 있습니다.

관련 정보