awk:

awk:

TempsModel.txt次のように生成されたファイルがあります。

ls /media/Elise/2811226E69F71131/ModelOutput/* > TempsModel.txt

したがって、そのディレクトリ内のすべてのファイルが一覧表示されます。ファイルはすべて圧縮されたnetcdfファイルなので、次のようになります。

/media/Elise/2811226E69F71131/ModelOutput/20091201_000000.nc.gz
/media/Elise/2811226E69F71131/ModelOutput/20091201_002023.nc.gz
/media/Elise/2811226E69F71131/ModelOutput/20091201_003009.nc.gz
/media/Elise/2811226E69F71131/ModelOutput/20091201_004020.nc.gz

を含めない場合は、このリストが必要です.gz。これらの3文字を削除する方法は?聞いてみようシェルスクリプトで文字列操作を使用して文字列の最後の文字を削除するそして行から最後の文字を削除

TempsModel2.txtしかし、リストに最後の3文字が含まれていない2番目のファイルを作成する方法は?

ベストアンサー1

以下を使用してファイルを作成することはベストプラクティスではないかもしれませんls

awk:

awk '{sub(/.gz$/, ""); print}' TempsModel.txt > TempsModel2.txt

sed:

sed 's/.gz$//' TempsModel.txt > TempsModel2.txt

.gz 拡張子なしで初期ファイルを生成するには、次のようにします。

for file in /media/Elise/2811226E69F71131/ModelOutput/*; do echo "${file%.gz}"; done > TempsModel.txt

次のようにすることもできます。

set -- /media/Elise/2811226E69F71131/ModelOutput/*
printf '%s\n' "${@%.gz}" > TempsModel.txt

おすすめ記事