![파일의 각 줄의 마지막 문자가 작은따옴표 문자로 끝나는지 확인하는 방법](https://linux55.com/image/204056/%ED%8C%8C%EC%9D%BC%EC%9D%98%20%EA%B0%81%20%EC%A4%84%EC%9D%98%20%EB%A7%88%EC%A7%80%EB%A7%89%20%EB%AC%B8%EC%9E%90%EA%B0%80%20%EC%9E%91%EC%9D%80%EB%94%B0%EC%98%B4%ED%91%9C%20%EB%AC%B8%EC%9E%90%EB%A1%9C%20%EB%81%9D%EB%82%98%EB%8A%94%EC%A7%80%20%ED%99%95%EC%9D%B8%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
여러 줄의 파일이 있습니다.
파일의 각 줄에 표시되는 마지막 문자가 작은따옴표인지 확인하면서 파일을 업데이트하고 싶습니다 '
. 그렇지 않은 경우 각 줄 끝에 작은따옴표를 추가해야 합니다.
작은따옴표가 줄의 마지막 문자인 경우 그대로 두십시오.
고양이 테스트.txt
fahsjhjkhkjhjhajkhjf
afasfsfsfffsfasf'
aaffa' sfff
wfafsfsaffs'
fsafsfs'afffafsasf
예상 출력:
fahsjhjkhkjhjhajkhjf'
afasfsfsfffsfasf'
aaffa' sfff'
wfafsfsaffs'
fsafsfs'afffafsasf'
답변1
이 sed
표현식은 s/[^']$/&'/
작은따옴표가 아닌 문자로 끝나는 줄의 끝에 작은따옴표를 삽입합니다.
셸에서:
sed "s/[^']$/&'/" file
표현식에는 작은따옴표가 포함되어 있으므로 큰따옴표로 표현식을 작성하기로 결정했습니다. 내부 편집을 수행하려면 이 비표준 옵션을 구현하는 경우 sed
해당 옵션을 사용하십시오.-i
빈 줄에 작은따옴표를 삽입하려면 빈 줄에 대해 특별히 추가 표현식을 사용하거나 다음을 수행할 수 있습니다.언제나줄 끝에 작은따옴표를 삽입하고 결과로 나오는 큰 작은따옴표를 바꿉니다.
즉,
sed -e "s/[^']$/&'/" -e "/^$/s//'/" file
또는
sed -e "s/$/'/" -e "s/''$/'/" file
답변2
일치하는 작은따옴표가 있고 존재하는 경우 이를 바꾸는 것이 허용되는 경우 다음을 시도해 볼 수 있습니다 sed
.
$ sed "s/\([^']*\)'\?$/\1'/" input_file
'fahsjhjkhkjhjhajkhjf'
afasfsfsfffsfasf'
aaffa' sfff'
wfafsfsaffs'
fsafsfs'afffafsasf'
이는 역참조를 사용하여 줄 끝까지의 모든 문자를 캡처합니다. 줄 끝에 작은따옴표가 있는 경우 캡처 대괄호 외부에 작은따옴표를 배치하여 이를 제외/제거합니다.
대괄호 안에 캡처된 모든 항목은 \1
각 줄 끝에 하드코딩된 작은따옴표와 함께 반환됩니다.
답변3
다음과 같은 작업이 수행됩니다.
awk -v a=\' '{print $0 a}' input.file
끝에 큰따옴표를 사용하지 않으려면 다음을 시도해 보세요.
awk -v a=\' '{print $0 a}' input.file|sed "s/''$/'/"
답변4
'
빈 입력 줄을 출력에 표시 하고 입력은 foo''
다음과 같은 출력을 원한다고 가정합니다 foo'
.
$ sed "s/'*$/'/" file
fahsjhjkhkjhjhajkhjf'
afasfsfsfffsfasf'
aaffa' sfff'
wfafsfsaffs'
fsafsfs'afffafsasf'