Phone_dir.txt라는 파일이 있습니다(예: 2줄).
ADAMS, Andrew 7583
BARRETT, Bruce 6466
성을 추출하고 대문자로 사용해 보았습니다. 원하는 출력은 다음과 같습니다.
Adams
Barret
다음 명령만 사용할 수 있습니다.
- 자르다
- 반죽
- 티
다음 스크립트를 실행해 보았으나 일관되지 않은 결과가 나타났습니다.
cut -c1 phone_dir.txt > last_names.txt | cut -f1 -d',' phone_dir.txt | cut -c2- | tr A-Z a-z | paste last_names.txt - | tr -d [:blank:]
때때로 출력은 다음과 같습니다:
Adams
Barret
때때로
dams
arret
결과가 일치하지 않는 이유는 무엇입니까?
답변1
임시 파일을 생성하도록 허용하는 것은 어떻습니까?
in=phone_dir.txt
out=last_names.txt
tmp=$$tmp && \
a=$(cut -d',' -f1 "$in" | tee >(cut -c2- | tr [:upper:] [:lower:] > "$tmp") | cut -c1) && \
paste <(printf "%s\n" ${a[@]}) "$tmp" | tr -d [:blank:] > "$out" && \
rm "$tmp"