나는 내 것을 가지고 있습니다 /etc/hosts
:
#192.168.54.144 name1
#192.168.54.144 name2
192.168.54.143 name3
#
다음을 얻기 위해 IP 주소 Ipv4 뒤에 오는 모든 문자를 제거하고 싶습니다 .
192.168.54.144 name1
192.168.54.144 name2
192.168.54.143 name3
sed
or awk
또는 을 사용해야 한다고 생각합니다 cut
.
감사해요
답변1
GNU 사용 sed
:
실제 IP만 일치(통과하다):
sed -E 's/^#(((1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])\.){3}(1?[0-9][0-9]?|2[0-4][0-9]|25[0-5]))/\1/' file
또는 단순 일치의 경우 다음 숫자를 확인하십시오 #
.
sed 's/^#\([[:digit:]]\)/\1/' file
-i
그러면 해당 편집 파일에 추가된 결과가 인쇄됩니다 .
perl
역참조의 필요성을 없애기 위해 Lookehead를 사용할 수도 있습니다 .
perl -pe 's/^\#(?=[[:digit:]])//' file
답변2
주문하다
sed "/^#[0-9]*\.[0-9]*\.[0-9]*\.[0-9]\{3\}/s/#//g" filename
산출
sed "/^#[0-9]*\.[0-9]*\.[0-9]*\.[0-9]\{3\}/s/#//g" filename
192.168.54.144 name1
192.168.54.144 name2
192.168.54.143 name3
답변3
Python을 사용해 보았는데 훌륭하게 작동합니다.
#!/usr/bin/python
import re
g=re.compile(r'[0-9]*\.[0-9]*\.[0-9]*')
m=open('u.txt','r')
for i in m:
if re.search(g,i):
print i.strip().replace("#","")
출력 1
92.168.54.144 name1
192.168.54.144 name2
192.168.54.143 name3
답변4
cat myfile | tr -d '#'
간단한 TR!