シェルでwhileループを使用してあるファイルを読み取り、別のファイルにリダイレクトする方法

シェルでwhileループを使用してあるファイルを読み取り、別のファイルにリダイレクトする方法

unimplemented.txt次の名前のファイルがあります。

verify-sdh-t1-satop-traffic-over-mpls-1for1-xxx,./TDM/SDH.xls
verify-sdh-t1-satop-traffic-over-mpls-1plus1-xxx,./TDM/SDH.xls

whileループを使用して上記のファイルを読み込み、次のものを/TDM/SDH_check.xls含む出力ファイルを生成するにはどうすればよいですか?

verify-sdh-t1-satop-traffic-over-mpls-1for1-xxx

こうしてみましたが、無限ループに陥ります。

while IFS="," read dummy casename tpname < "unimplemented.txt"
do
    echo "$casename" > basename $tpname|sed -e 's/\..\+$//'
done

ベストアンサー1

スクリプトにいくつかの問題があるようです。

  1. あなたはなぜですかread dummy casename tpname?この行では、読み取りは3つのフィールドを待っていますが、2つのフィールドのみが必要です。

  2. を作成すると、echo "$casename" > basename $tpname|sed -e 's/\..\+$//'次のことが行われます。

    1. (代わりに)$casenameにエコーされます。basename$basename
    2. sedecho出力に代替を適用するだけです。大丈夫です。
  3. 使用する>たびに上書きされますecho。追加するには>>

以下は私に合うようですが、これが欲しいのかどうかはわかりません。

gcolangelo@NEO-L196:/tmp/pouet$ cat unimplemented.txt 
verify-sdh-t1-satop-traffic-over-mpls-1for1-xxx,./TDM/SDH.xls
verify-sdh-t1-satop-traffic-over-mpls-1plus1-xxx,./TDM/SDH.xls
verify-sdh-t2-satop-traffic-over-mpls-1for1-xxx,./TDM/SDG.xls
verify-sdh-t2-satop-traffic-over-mpls-1plus1-xxx,./TDM/SDG.xls
gcolangelo@NEO-L196:/tmp/pouet$ cat unimplemented.txt | while IFS=',' read casename tpname ; do echo "$casename"|sed -e 's/\..\+$//' >> $tpname ; done
gcolangelo@NEO-L196:/tmp/pouet$ cat TDM/SDH.xls 
verify-sdh-t1-satop-traffic-over-mpls-1for1-xxx
verify-sdh-t1-satop-traffic-over-mpls-1plus1-xxx
gcolangelo@NEO-L196:/tmp/pouet$ cat TDM/SDG.xls 
verify-sdh-t2-satop-traffic-over-mpls-1for1-xxx
verify-sdh-t2-satop-traffic-over-mpls-1plus1-xxx

おすすめ記事