붙여넣기 명령이 일대일이 아닙니다.

붙여넣기 명령이 일대일이 아닙니다.

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"

관련 정보