다음 내용이 포함된 products.txt 파일이 있습니다.
ID Name
w01 Whipped cream
c01 Cocoa Powder
s01 Jaggery
e01 Egg
f05 Flour
xxxxxxx
xxxxxxxxxxx
xxxxxxxxxxx
s01 Jaggery
e01 Egg
f05 Flour
xxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxx
s01 Jaggery
e01 Egg
f05 Flour
xxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxx
다음 텍스트를 바꿔야 합니다.
s01 Jaggery
e01 Egg
그리고 -
something
else
행의 시작과 중간에 있는 탭을 확인하세요.
awk 또는 sed를 사용하여 위 문제에 대한 해결책을 찾는 데 도움을 주셔서 감사합니다.
감사합니다!
답변1
sed를 사용하면 N
명령을 사용하여 줄을 연결한 다음 여러 줄에 대한 작업을 수행할 수 있습니다(예: s를 사용하여 검색 및 바꾸기). 표현식에서는 \t
탭 및 \n
줄 바꿈 문자를 사용합니다(줄을 N
.
예:
sed -e'/^\ts01\tJaggery/N;s/\ts01\tJaggery\n\t\te01\tEgg/\t\tsomething\n\telse/'
위에서는 s01 이전에 탭 문자 1개, s01과 Jaggery 사이에 탭 문자 1개, e01 이전에 탭 문자 2개, e01과 Egg 사이에 탭 문자 1개가 있다고 가정합니다. 이 명령은 sed에게 regexp와 일치하는 행에서만 작동하고 ^\ts01\tJaggery
해당 N
행을 다음 행( )과 연결한 다음 및 와 s
같은 탭 및 개행 문자를 포함하는 교체 작업( ) 을 수행하도록 지시합니다 .\t
\n