텍스트 파일의 모든 줄에서 구분 기호 );
앞뒤의 텍스트를 제거하는 데 도움이 필요합니다. |
즉:
SUBSCIBER_MSISDN=6289666195060');BEGIN DBMS_LOCK.SLEEP(5); END-- rKSy|
결과는 다음과 같아야합니다
SUBSCIBER_MSISDN=6289666195060|
이 섹션을 제거하는 방법을 아시나요? 이것은 큰 파일입니다.
꼭 사용해야 한다면 미칠 것 같아요 sed
.
답변1
일부 입력 파일의 전체 행을 표시한다고 가정합니다.
sed "s/'.*/|/" file >newfile
'
이렇게 하면 각 줄의 첫 번째 문자 뒤의 모든 내용이 한 |
문자로 대체됩니다. 결과는 리디렉션을 통해 새 파일에 기록됩니다. sed
작은따옴표로 묶인 문자열에는 작은따옴표 문자가 포함될 수 없기 때문에 표현식 주위에 큰따옴표를 사용하고 있습니다 .
샘플 데이터가 주어지면 이는 다음과 같습니다.
SUBSCIBER_MSISDN=6289666195060|
줄 시작 부분에서도 공백을 제거하려는 경우(귀하의 예에서는 이렇게 하는 것 같습니다):
sed -e "s/'.*/|/" -e 's/^[[:blank:]]*//' file >newfile
또는,
sed "s/'.*/|/; s/^[[:blank:]]*//" file >newfile
역겹다면 다음 을 사용하여 똑같은 변환을 수행 sed
할 수 있습니다 .awk
awk '{ sub("'"'"'.*", "|"); sub("^[[:blank:]]*", ""); print }' file >newfile
펑키한 모양은 '"'"'
인용된 작은따옴표입니다. awk
코드를 구성하는 작은따옴표 문자열 외부에서는 큰따옴표로 묶어야 합니다 . 우리는 또한 사용할 수 있습니다 '\''
.
awk '{ sub("'\''.*", "|"); sub("^[[:blank:]]*", ""); print }' file >newfile
또는 작은따옴표 문자에 8진수 ASCII 코드를 사용할 수 있습니다.
awk '{ sub("\047.*", "|"); sub("^[[:blank:]]*", ""); print }' file >newfile