개인 규칙에 따라 텍스트 파일 편집

개인 규칙에 따라 텍스트 파일 편집

특정 텍스트 파일을 편집하고 싶습니다.

dd.mm.yyyy, hh:mm/s-show/...
dd.mm.yyyy, hh:mm/s-show/...
dd.mm.yyyy,/s-show/...

여기서 /s-show/는 각 줄에 있고 그 뒤에 임의의 문자 "..."가 옵니다.

두 가지 상황이 있습니다.

  1. 한 줄은 "dd.mm.yyyy" 형식의 날짜로 시작하고, 쉼표와 공백, "hh:mm" 형식의 시간, 마지막으로 /s-show/...를 차례로 입력합니다.

  2. 한 줄은 날짜만으로 시작하고 그 뒤에 쉼표가 오고 바로 /s-show/...가 옵니다.

각 줄은 다음과 같이 편집되어야 합니다:

첫 번째 경우 hh:mm 뒤에 공백 3개를 입력하고(줄이 날짜와 시간으로 시작하는 경우) 두 번째 경우에는 쉼표 뒤에 공백 3개를 입력하고(결과가 날짜로만 시작하는 경우) 동일한 문자열 "을 추가합니다. /s-show/ 앞의 https://www.test.com"

/s-show/는 링크의 일부이며 왼쪽의 "https://www.test.com"으로 보완되어야 유효한 링크가 됩니다.

따라서 각 행의 결과는 다음과 같아야 합니다.

dd.mm.yyyy, hh:mm   https:/www.test.com/s-show/...
dd.mm.yyyy, hh:mm   https:/www.test.com/s-show/...
dd.mm.yyyy,   https:/www.test.com/s-show/...

이것이 어떻게 가능한지? 추가적인 이점은 링크가 동일한 장소에서 시작된다는 점입니다. 따라서 첫 번째 경우에는 3칸이고, 두 번째 경우에는 9칸입니다.

답변1

이 답변에서는 날짜(및 시간) 뒤의 텍스트가 항상 고정 문자열로 시작한다고 가정합니다 /s-show/.

sed -e 's#^\([^/]\{17\}\)\(/s-show/\)#\1   https:/www.test.com\2#' -e 's#^\([^/]\{11\}\)\(/s-show/\)#\1         https:/www.test.com\2#' inputfile > outputfile

설명하다:

스크립트는 날짜나 시간을 확인하지 않으며 /줄 시작 부분과 다른 17자(또는 11자)가 필요하고 /s-show/캡처된 그룹 사이에 필요한 수의 공백을 삽입합니다.https:/www.test.com

참고: sed교체( ) 명령에서는 패턴에서 슬래시가 이스케이프되는 것을 방지하기 위해 일반적인 구분 기호 대신 s구분 기호를 사용합니다 .#/

시험:

echo 'dd.mm.yyyy, hh:mm/s-show/...
dd.mm.yyyy, hh:mm/s-show/...
dd.mm.yyyy,/s-show/...' | sed -e 's#^\([^/]\{17\}\)\(/s-show/\)#\1   https:/www.test.com\2#' -e 's#^\([^/]\{11\}\)\(/s-show/\)#\1         https:/www.test.com\2#'

인쇄

dd.mm.yyyy, hh:mm   https:/www.test.com/s-show/...
dd.mm.yyyy, hh:mm   https:/www.test.com/s-show/...
dd.mm.yyyy,         https:/www.test.com/s-show/...

답변2

Perl은 다음과 같은 경우에 편리합니다.

perl -pe 's{([^/]+)}{ sprintf "%-17s   https://www.test.com", $1 }e' file

관련 정보