문제가 있는데 다음 문제에 대한 해결책을 찾을 수 없습니다.
특수 문자로 시작하는 경우 줄의 첫 번째 단어를 다음 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:]
문자 범위의 모든 영숫자를 나타냅니다. "특수 문자" 정의에 따라 다양한 문자 범위를 조정합니다.