Команда вставки не является индивидуальной

У меня есть файл с именем phone_dir.txt (например, 2 строки):

ADAMS, Andrew 7583
BARRETT, Bruce 6466

Я пытаюсь извлечь фамилии и использовать их с заглавной буквы. Требуется вывод:

Adams
Barret

Я могу использовать только такие команды, как:

  • cut
  • paste
  • tr

Я попытался запустить следующий скрипт, но результаты оказались несовместимыми:

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

Почему возникают ошибки? противоречивые результаты?

0
06.12.2016, 20:31
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"
1
28.01.2020, 02:47

Теги

Похожие вопросы