한 줄씩 sed 적용

한 줄씩 sed 적용

파일 텍스트에 직접 적용하는 대신 sed를 한 줄씩 적용하는 방법을 아는 사람이 있습니까?

for i in $(cat server); do
    Exclude_List="AF|PO" 
    echo $i | egrep $LBB3B
    if [ $? -eq 0 ]; then
    **do my sed on the $i line only then continue on next line**
    fi
done

답변1

sed이미 한 줄씩 작업 중입니다.

sed -E '/AF|PO/{ ...sed expression to apply when matching... }' server

예를 들어, 이 정규식과 일치하는 행만 인쇄하려면 다음을 수행하십시오.

sed -nE '/AF|PO/p' server

플래그는 -E유틸리티 sed가 정규식을 확장된 정규식으로 해석하고 -n각 입력 행에 대한 암시적 출력을 끄도록 합니다.

표현식과 일치하는 줄에서 여러 작업을 수행하려면 해당 줄을 묶습니다 { ... }. 예를 들어, 일치하는 각 줄을 두 번 인쇄합니다(일치하지 않는 줄은 인쇄하지 않음).

sed -nE '/AF|OP/{p;p;}' server

답변2

sed에는 다음과 같은 경우 라인 주소 지정 기능이 있습니다.

$ seq 5 > input
$ sed '3s/.*/jeff/' input
1
2
jeff
4
5
$ sed '3,5s/.*/new/' input
1
2
new
new
new

바꾸다쉘 루프를 사용하여 텍스트 파일 처리, 텍스트를 보다 자연스럽게 처리하는 도구를 고려해보세요.:

$ cat input
AF bar
PO baz
other stuff
more other stuff


$ awk '/(AF)|PO/ { print }' input
AF bar
PO baz

$ awk '/stuff/ && !/more/ { print }' input
other stuff

답변3

sed그것은 목적이 아닙니다 . 쉘의 기본 기능을 사용하여 모든 작업을 "한 줄씩" 수행할 수 있습니다.

관련 정보