주어진 단어를 기준으로 데이터를 좋은 열로 정렬하려면 어떻게 해야 합니까?
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
첫 번째 항목만 대체하고 간단한 일치를 사용합니다. 주변 공간 일치와 같은 다른 경우에는 더 엄격한 일치가 필요할 수도 있습니다.