파일 텍스트에 직접 적용하는 대신 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
그것은 목적이 아닙니다 . 쉘의 기본 기능을 사용하여 모든 작업을 "한 줄씩" 수행할 수 있습니다.