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"