csv 파일에서 시작되는 행
14/Feb/2016:15:21:33-0500]http://map1.link.de/mk
교체/제거 및 추가가 가장 쉬운 부품은 무엇입니까?
]http://map1.link.de/
그리고
,
map
어떤 숫자든 가능하다는 점을 기억하세요map1, map2, map3
몇 줄의 예:
14/Feb/2016:15:21:33-0500]http://map1.link.de/mk
14/Feb/2016:16:21:33-0500]http://map5.link.de/mk
최종 결과
14/Feb/2016:15:21:33-0500,mk
14/Feb/2016:16:21:33-0500,mk
답변1
나는 다음을 사용할 것이다 sed
:
sed 's/\(.*\)].*\/\(.*$\)/\1,\2/' csv
14/Feb/2016:15:21:33-0500,mk
14/Feb/2016:16:21:33-0500,mk
csv
이 파일은 어디에 있습니까:
cat csv
14/Feb/2016:15:21:33-0500]http://map1.link.de/mk
14/Feb/2016:16:21:33-0500]http://map5.link.de/mk
설명:
\(.*\)]
= 검색 및구하다첫 번째 [
.*\/
=까지 각 문자 다음에 검색 - 실행아니요저장 - 끝까지 모두 /
\(.*$\)
=구하다그 이후 줄 끝까지 ( mk
)
\1,\2
= 우리가 저장한 내용으로 대체되고 사이에 쉼표를 추가합니다.
답변2
다음과 같이 확장 [0-9]\{1,\}
정규식 연산자를 사용하여 POSIXly 또는 이식성이 떨어지는 하나 이상의 십진수 시퀀스를 나타낼 수 있습니다.+
[0-9]+
sed 's@]http://map[0-9]\{1,\}\.link\.de/@,@' file.csv
14/Feb/2016:15:21:33-0500,mk
14/Feb/2016:16:21:33-0500,mk
또는
sed -E 's@]http://map[0-9]+\.link\.de/@,@' file.csv
14/Feb/2016:15:21:33-0500,mk
14/Feb/2016:16:21:33-0500,mk
바꾸고 싶다면어느URI(정규화된 호스트 이름이 일치하는 URI뿐만 아니라 map?.link.de
)를 사용하면 후자를 다음과 같이 단순화할 수 있습니다.
$ sed -E 's@]http://[^/]*/@,@' file.csv
14/Feb/2016:15:21:33-0500,mk
14/Feb/2016:16:21:33-0500,mk