
여러 문자열 줄의 시작 부분에 있는 문자를 제거하려고 하는데 줄 시작 앞에 다른 패턴이 있어서 제거하고 싶지 않습니다.
1:string:test...
2:string test
3:etc...
도착하다
1 string:test...
2 string test
3 etc...
:
일부 문자열에는 흥미로운 내용을 만들기 위해 문자가 포함될 수도 있습니다. 지금까지 나는 다음을 시도했습니다.
echo "1:test:" | grep -Pv '(?<=\d):'
문자 와 일치하지만 :
(적어도 강조 표시되므로 그렇게 추측됩니다) flag를 사용할 때 생략되지 않습니다. -v
아마도 일치 항목과 같은 줄에 있기 때문일까요? (여기서는 앞서 언급한 예시처럼 공백으로 대체하는 것이 아니라, 매칭하고 제거하는 방법만 실험해봤습니다.)
echo "1:test:" | sed 's/^.:./ /g'
이것이 내가 얻는 가장 가까운 것 같지만 문자 옆의 나머지 부분을 잘라냅니다. :
이는 다음을 제공합니다.
est:
바꾸다
1 test:
답변1
이것은 작동합니다:
echo -e "1:test:\n2:test\n3:test:\n" | sed '/:/s// /'
인쇄
1 test:
2 test
3 test:
답변2
파이썬
#!/usr/bin/python
import re
k=re.compile(":")
m=open('filename','r')
for i in m:
print i.replace(":"," ",1).strip()
awk 명령은 언급된 예제에서만 작동합니다.
awk -F ":" '{print substr($0,1,1),substr($0,3)}' filename
sed 명령
sed "s/:/ /1" filename