다음 형식의 파일이 있습니다.
⌚..⌛ watch..hourglass
⌨️ keyboard
⏏️ eject button
일부 줄에는 두 개의 항목이 포함되어 있습니다. 2개의 항목이 포함된 행을 다음과 같이 2개의 행으로 분할하고 싶습니다.
⌚ watch
⌛ hourglass
⌨️ keyboard
⏏️ eject button
이 작업을 수행하는 빠른 방법이 있나요?
내 스크립트:
#!/usr/bin/env bash
wget -O output.txt http://www.unicode.org/Public/emoji/6.0/emoji-data.txt
sed -i '/^#/ d' output.txt # Remove comments
sed -i 's/.*(//' output.txt # Remove columns not needed
sed -i 's|[(),]||g' output.txt # Remove brackets around emoji
sed -i 's/\(.*[^ ]\)[ ]*\(.*\)/\2 \1/' output.txt # Move first column to last
sed -i '/^$/d' output.txt # Remove blank lines
다음 질문에 대한 @RomanPerekhrest의 답변을 시도했습니다.(답변이 업데이트되었습니다):
↔️..↙️ left-right arrow..down-left arrow
↩️..↪️ right arrow curving left..left arrow curving right
⌚..⌛ watch..hourglass done
⌨️ keyboard
시계/모래시계에서는 작동하지만 위의 시계/모래시계에서는 작동하지 않습니다(?)
답변1
답변2
zeppelin의 답변을 기반으로 한 또 다른 sed
버전이지만 더 간단하고 정렬되어 있습니다. 유니코드가 항상 단일 문자는 아닙니다. 테스트에는 gnu를 사용하십시오 sed
.
sed 's/\.\.\([^ ]*\) *\(.*\)\.\./\t\2\n \1\t/'
산출:
↔️ left-right arrow
↙️ down-left arrow
↩️ right arrow curving left
↪️ left arrow curving right
⌚ watch
⌛ hourglass done
⌨️ keyboard
답변3
앗해결책:
awk -F'[[:space:]][[:space:]]+' '$1~/\S\.\.\S/ && $2~/\S\.\.\S/{
split($1,a,/\.\./); split($2,b,/\.\./);
printf("%s\t%s\n%s\t%s\n",a[1],b[1],a[2],b[2]); next
}1' file
-F'[[:space:]][[:space:]]+'
- 필드 구분 기호$1~/\S\.\.\S/ && $2~/\S\.\.\S/
- 2개의 필드에..
다음이 포함된 경우하위 프로젝트분할기
산출:
↔️ left-right arrow
↙️ down-left arrow
↩️ right arrow curving left
↪️ left arrow curving right
⌚ watch
⌛ hourglass done
⌨️ keyboard