2013-03-27 4 views
0

몇 가지 간단한 수정이 필요한 파일이 있습니다. 일반적으로 나는 문제가 없지만 컬럼은 거의 똑같아서 나를 버리게된다.sed & awk, 두 번째 열 수정

몇 가지 예 :

net_192.168.0.64_26 192.168.0.64_26 
net_192.168.0.128-26 192.168.0.128-26 

이제 일반적으로 스트림에 난 그냥 그러나 내가 나를 혼란 파일에이를 작성해야, 두 번째 열을 수정할 것입니다.

다음 문자열은 내가 필요로하는 것은 무엇에 하는가 그러나 나는 첫 번째 열에에 표시되지 않게, 파이프 어딘가에 유용 할 수 없습니다

출력 모양을 필요
cat file.txt | awk '{print $2}' | sed 's/1_//g;s/2_//g;s/1-//g;s/2-//g;s/_/\ /g;s/-/\ /g' | egrep '[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}' 

은 (서브넷은 3이된다 열) :

net_192.168.0.64_26 192.168.0.64 26 
net_192.168.0.128-26 192.168.0.128 26 

나는 등 옛

감사를 수정/나는 새 파일에 파이프를 할 수 있도록 눈에 보이는 모두 열을 유지하면서 위의 라인은, 무엇을 어떻게해야합니까 ! 당신을 위해 확인하는 경우

답변

1

당신은 단지 하나의 공간에서 함께 문자 _, -을 바꾸려면 두번째 필드는 다음과 같습니다 :

$ awk '{gsub(/[-_]/," ",$2)}1' file 
net_192.168.0.64_26 192.168.0.64 26 
net_192.168.0.128-26 192.168.0.128 26 
+2

글쎄, 당신이 먼저 대답, 나는 당신에게 간다 같아요 :) 고마워요 선생님! – Numpty

+0

@Numpty 내 기쁨. –

2

이 시도 : 귀하의 예제 텍스트

awk '{gsub(/[_-]/," ",$2)}1' file 

시험 :

kent$ echo "net_192.168.0.64_26 192.168.0.64_26 
net_192.168.0.128-26 192.168.0.128-26"|awk '{gsub(/[_-]/," ",$2)}1' 
net_192.168.0.64_26 192.168.0.64 26 
net_192.168.0.128-26 192.168.0.128 26 
+0

지긋 지긋합니다. 잘 하셨네요. – Numpty

1

그리고 sed ver 선택 사항 :

sed 's/\(.*\)[-_]/\1 /' file