
텍스트 파일의 모든 줄에서 구분 기호 뒤 );
와 앞의 텍스트를 제거하는 데 도움이 필요합니다 . |
즉:
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