sed는 다음 경우에 이전 줄의 첫 번째 단어를 다음 줄의 시작 부분에 추가합니다.

sed는 다음 경우에 이전 줄의 첫 번째 단어를 다음 줄의 시작 부분에 추가합니다.

문제가 있는데 다음 문제에 대한 해결책을 찾을 수 없습니다.

특수 문자로 시작하는 경우 줄의 첫 번째 단어를 다음 n 줄의 시작 부분에 복사하고, 그렇지 않으면 새 단어를 복사하고 싶습니다.

입력하다:

aaa random words

`dsf

|df

bbb

|d

산출:

aaa random words

aaa`dsf

aaa|df

bbb

bbb|d

답변1

awk oneliner:

awk '/^[[:alnum:]]/ {prefix = $1; print; next} {print prefix $0}' input
  • 영숫자 문자로 시작하는 줄에서 첫 번째 단어를 에 저장하고 prefix해당 줄을 인쇄한 후 다음 줄로 계속합니다.
  • 다른 모든 줄에서는 prefix이 줄 앞에 인쇄하세요.

답변2

awk -f 1stword.awk < input

여기에는 1stword.awk다음 스크립트가 포함되어 있습니다.

$0 ~ /^[[:alnum:]]/ { word=$1 ; print }   # save 1st word
$0 ~ /^[^[:alnum:]]/ { print word$0 }     # prepend saved word

[:alnum:]문자 범위의 모든 영숫자를 나타냅니다. "특수 문자" 정의에 따라 다양한 문자 범위를 조정합니다.

관련 정보