貼り付けコマンドは1対1ではありません。

貼り付けコマンドは1対1ではありません。

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"

おすすめ記事