아래와 같이 여러 줄에 단일 쉼표가 있는 test.txt 파일이 있습니다.
$ cat test.txt
ABCD
Test,plan
Sample
Working
Tester,Developer
Learn
Teach
Study
Coding
Stack,exchange
필요한 출력은 다음과 같습니다.
ABCD
ABCD
Sample
Working
Working
Learn
Teach
Study
Coding
Coding
Unix 명령을 사용하여 위 내용을 인쇄하는 방법을 찾을 수 없습니다. 이 쉼표 줄 검색을 처리하고 위 줄로 바꾸는 방법을 알려주십시오.
교체할지 확실하지 않은 경우 다음 검색을 시도해 보세요.
#Searching comma
sed -i 's/,/replace_above_line/g' test.txt
쉼표가 포함된 파일의 이전 줄로 전역 교체를 수행하고 싶습니다.
답변1
의 sed
경우 패턴 공간에 두 줄을 유지해야 합니다.
sed -i -e '$!N;s/\(.*\)\n.*,.*/\1\n\1/' -e 'P;D' file
또는 를 사용하여 쉼표 줄( ) 앞의 각 줄을 ed
표시한 다음 복사( )하고 돌아가서 원래 줄을 삭제할 수 있습니다( ).g/,/-1
t
-1d
$ ed -s file
g/,/-1t\
-1d
wq
또는 한 줄로:
printf '%s\n' g/,/-1t\\ -1d wq | ed -s file