저는 사용자 목록이 포함된 속성 파일을 작업 중입니다.
[email protected],[email protected]
[email protected],[email protected]
[email protected]
[email protected]
[email protected]
이제 그냥 삭제하고 싶다면[이메일 보호됨]AdminList에서만 가능합니다. Linux에서 sed나 awk를 사용하여 이 작업을 어떻게 수행할 수 있나요? 리눅스 초보인데 도와주세요
편집: 전체 가치 부분을 제거하고 싶지 않습니다. 특정 문자열만 삭제하고 싶습니다. 예를 들어, 내 파일이 다음과 같다면:
[email protected],[email protected]
[email protected],[email protected]
[email protected]
[email protected],[email protected],[email protected],[email protected]
[email protected]
이 경우에는 그냥 없애고 싶습니다.[이메일 보호됨]관리자 목록에서
답변1
사례 1: 전체 "값" 부분 제거
파일에 "간단한" key=value
명령문만 포함되어 있다고 가정합니다. 즉, "값" 부분에 다음이 포함되어 있습니다.아니요 =
sed
다음과 같이 사용할 수 있는 플래그 :
sed '/^AdminList/s/=.*$/=/' propertyfile.txt
예제의 출력은 다음과 같습니다.
[email protected],[email protected]
[email protected],[email protected]
[email protected]
AdminList=
[email protected]
여기서의 아이디어는 s
명령에서 로 구성된 표현식을 바꾸고 =
그 뒤에 .*
라인 끝까지(기호)까지 원하는 수의 문자(부분)가 뒤따르도록 하는 것입니다. 단, 로 시작하는 라인에서만 가능합니다.$
=
AdminList
사례 2: 값 목록에서 특정 값에 대한 소비세 공제
쉼표로 구분된 목록에서 하나의 특정 값만 제거하려면 awk
- 기반 접근 방식을 권장합니다.
awk '/^AdminList/ {sub(/[email protected],?/,""); print;next} {print}' propertyfile.txt
AdminList
이는 패턴 으로 시작하는 행과 일치하고 빈 문자열이 [email protected]
뒤따르는 행을 ,
바꾸고, 수정된 행을 인쇄하고, 실행을 위해 다음 행으로 점프합니다. 다른 모든 줄의 경우 단순히 전체 줄을 인쇄합니다.
두 번째 예제 입력을 고려하면 다음과 같은 결과가 나옵니다.
[email protected],[email protected]
[email protected],[email protected]
[email protected]
[email protected],[email protected],[email protected]
[email protected]
선택한 구문은 상당히 이식성이 있어야 합니다. GNU Awk 및 Mawk를 사용하여 테스트했습니다.
답변2
테스트용으로 test.txt 파일에 데이터를 저장합니다.
[email protected],[email protected]
[email protected],[email protected]
[email protected]
[email protected]
[email protected]
sed나 grep을 사용하세요
cat test.txt | sed /AdminList/d
cat test.txt | grep -v AdminList
편집하다:
cat test.txt | grep AdminList | awk -F"=" '{print $2}' | sed -n 1'p' | tr ',' '\n' | while read word; do if [ "$word" = "[email protected]" ]; then continue; else echo $word; fi; done
답변3
sed로 파일을 직접 편집하려면 다음을 사용하세요.
sed -i '/[email protected]/d' file
답변4
주문하다
sed "/AdminList/s/abc1\@abc\.com,//g" filename
입력하다
[email protected],[email protected]
[email protected],[email protected]
[email protected]
[email protected],[email protected],[email protected],[email protected]
[email protected]
산출
[email protected],[email protected]
[email protected],[email protected]
[email protected]
AdminList=,[email protected],[email protected],[email protected]
[email protected]