파일에서 정확히 한 줄을 제거하십시오.

파일에서 정확히 한 줄을 제거하십시오.

다음 줄이 포함된 파일이 있습니다.

SUKsoft:
SUKsoft: App-Conduct_Risk_Comment
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW

"SUKsoft:" 줄을 어떻게 제거하나요?

이 줄은 파일의 어느 위치에나 있을 수 있습니다(지금부터 시작하거나 중간).

이를 수행하는 명령이 있습니까?

답변1

에게제거하다라인 사용

sed -i '/SUKsoft:\s*$/d' your_file 

% cat foo
SUKsoft: 
SUKsoft: App-Conduct_Risk_Comment   
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW

% sed -i '/SUKsoft:\s*$/d' foo

% cat foo                    
SUKsoft: App-Conduct_Risk_Comment   
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW

답변2

원하는 줄을 제거하는 단계는 다음과 같습니다.

$ sed 's/SUKsoft: *$//' file.txt

SUKsoft: App-Conduct_Risk_Comment
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW

나는 file.txt줄이 포함되어 있다고 가정합니다.

또는,

$ sed 's/SUKsoft: *$//; /^$/d' file.txt
SUKsoft: App-Conduct_Risk_Comment
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW

아무것도 남기지 않아공백선.

사용할 수 있는 파일을 편집하려면,

sed -i 's/SUKsoft: *$//' file.txt

또는

sed -i 's/SUKsoft: *$//; /^$/d' file.txt

당신의 필요에 따라.

보다AB보다 간결한 방식으로 수행되는 답변입니다. 덕분에와일드카드.

답변3

grep패턴을 만족하는 라인을 검색합니다. grep -v 폐기하다패턴을 만족하는 선.

grep -v '^SUKsoft: *$'

패턴은 다음과 같습니다. ^로 시작하는 줄( ) SUKsoft:, 뒤에 공백이 올 수도 있지만 줄 끝까지( $)까지 아무 것도 없습니다.

답변4

당신의 판단에 따르면원시 소스를 게시하지 않음"SUKsoft:" 뒤에는 공백이나 공백 순서가 없습니다. 그러나 안전을 위해 이 명령은 공백이 있는 경우 이를 처리합니다.

펄 사용:

perl -ne '!/^SUKsoft: *$/&&print' input
  • !/^SUKsoft:$/&&print: 현재 줄이 문자열로 시작하고 뒤에 0개 이상의 공백이 오는 ^SUKsoft: *$줄과 일치하는 패턴과 일치하지 않으면 해당 줄을 인쇄합니다.SUKsoft:
% cat input
SUKsoft:
SUKsoft: App-Conduct_Risk_Comment
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW
% perl -ne 'print unless /^SUKsoft: *$/' input
SUKsoft: App-Conduct_Risk_Comment
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW

관련 정보