"*"기호를 사용하여 (그럴 필요는 없으며 특수 문자가 표시하기 위해 수행합니다) 어떻게 텍스트를 편집 할 수 있습니까?
*berry
straw
rasp
blue
boysen
*
blahblah
blahblah
blahblah
*berry
straw
blue
*
blah
*table
vege
pingpong
*
이에:
strawberry
raspberry
blueberry
boysenberry
blahblah
blahblah
blahblah
strawberry
blueberry
blah
vegetable
pingpongtable
일치하는 첫 번째 별표 뒤의 모든 문자는 두 번째 일치하는 별표를 찾을 때까지 모든 행에 배치됩니다.
내가 어떻게 할 수 있는지에 대한 단서가 있습니까? (sed 또는 awk가 선호되지만 다른 방법을 생각할 수 있다면 코드를 쏴주세요!)
별표가 포함 된 모든 줄을 제거하는 방법을 알고 있지만 생각할 수없는 문자 배치 부분 일뿐입니다.
이 awk
코드는 충분할 수 있습니다.
awk -F'*' 'NF == 2 {label = $2; next} {$0 = $0 label} 1'
분석하려면 :
*
필드 구분자로 사용 합니다. 이런 식으로 필드 수 ( NF
)를 검사하여 블록의 시작 또는 끝에 도달했는지 확인할 수 있습니다.label
하고 다음 행으로 계속합니다.label
현재 줄에 추가 한 다음 인쇄합니다. 레이블이 비어 있으면 우리는 블록 외부에 있으며 효과가 없습니다. 그렇지 않은 경우 필요한 출력을 얻습니다.이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다