파일의 각 줄의 마지막 문자가 작은따옴표 문자로 끝나는지 확인하는 방법

파일의 각 줄의 마지막 문자가 작은따옴표 문자로 끝나는지 확인하는 방법

여러 줄의 파일이 있습니다.

파일의 각 줄에 표시되는 마지막 문자가 작은따옴표인지 확인하면서 파일을 업데이트하고 싶습니다 '. 그렇지 않은 경우 각 줄 끝에 작은따옴표를 추가해야 합니다.

작은따옴표가 줄의 마지막 문자인 경우 그대로 두십시오.

고양이 테스트.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'

관련 정보