我有一个名为phone_dir.txt的文件(例如2行):
ADAMS, Andrew 7583
BARRETT, Bruce 6466
我尝试提取姓氏并将其大写,所需的输出是:
Adams
Barret
我只能使用以下命令:
- 切
- 粘贴
- t
我尝试运行以下脚本,但结果不一致:
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"