HULFTの定義を削除するutlirmはファイルIDを1つずつしか消せない?複数ファイルIDを一気に消す方法

 

HULFT定義の中でファイルIDを登録するコマンドはutliupdtコマンドで定義ファイルを読み込ます事でできます。

反対にファイルIDを削除するコマンドにはutlirmというコマンドを使います。

コマンドの使い方は以下の記事でも説明していますが、utlirmにオプションを付ける事で削除ができるというのはutliupdtと変わりません。

utlirmコマンドの使い方
utlirm -i {snd|rcv|job|hst|tgrp|fmt|mfmt|trg} -id ID

HULFT定義を削除する際に利用するコマンド。utligenコマンドと同じように-iオプションを複数指定する事で複数定義を削除する事が可能。
もちろん*(アスタリスク)も利用できる。

例)配信定義のsnd0100、集信定義のrcv0100、詳細ホスト定義のhost0100を削除する場合
utlirm -i snd -id “snd0100” -i rcv -id “rcv0100” -i hst -id “host0100”

[clink url=”https://itengneer-navi.com/hulft-linux-command/”]

utlirmコマンドは複数ファイルIDを一気に消せない?

utlirmコマンドはオプションのなかで指定されたファイルIDを削除するコマンドなのですが、
登録コマンドであるutliupdtみたいにファイル読込をできないのでオプションに1つずつファイルIDを指定する必要があります。

 

*(アスタリスク)を使う事ができるので、例えばtest01、test02、test03・・・のように連続したファイルIDを削除する場合は
test*のような形で複数ファイルIDを一気に削除する事ができます。

またutlirmコマンドは-iの後ろにsndやrcvといったファイルIDの種別、その後に-idとファイルIDを指定するといったオプションを
何回も続けて記載する事ができますので、以下のように複数ファイルIDを記載したコマンドを作成するというのも一つの手段です。

utlirm -i snd -id “test01” -i snd -id “test02” -i snd -id “test03” -i tgrp -id “test04” -i rcv -id “test05”

更にもっと削除したいファイルIDの数が多いときに考えておきたいのがプログラムによる処理。

定期的に削除する運用がある場合にはプログラムによる処理を検討した方が便利ですし、プログラムのテストさえしてしまえば汎用性とミスをなくすという意味でも便利です。

複数ファイルIDを削除できるようにシェルプログラムを作っておく

シェルを利用した複数ファイルIDを削除する手法としては、

例えば削除したいファイルIDを記載したテキストファイルをfor文やwhile文で読み込ませる事

で削除を行う事ができます。

例えば読み込ませるテキストファイルをhuliddel.txtとしてwhile文で以下のように読み込ませます。

配信ファイルID削除シェル

l_sendid=””

l_param = /work/huliddel.txt

while read l_sendid ; do

utlirm -i snd -id “${l_sendid}”

done < ${l_param}

huliddel.txtの中身
fileid01
fileid02
fileid03
fileid04



上記のように読み込む事で、読み込ませたファイル内で指定したファイルIDを連続して削除する事ができます。

配信ファイルIDのみのシェルとして記載しましたが、sndの部分をrcvやhst、tgrp、jobに変更する事により、集信ファイルIDや転送グループIDを削除する事ができます。

もともとsndやrcv、hstなど関わらず判別して削除するようなシェルを作成していましたが、結局運用する上では使いにくく、配信ファイルIDなら配信ファイルID、集信ファイルIDなら集信ファイルIDをまとめて削除して確認した方が作業が早かったので上述の形に落ち着きました。

削除前後の確認方法

geralt / Pixabay

削除する際に気を付けたいのが、消してはいけないファイルIDまで削除してしまう事。

削除対象を誤って必要なファイルIDまで削除してしまうと大変ですよね。

よって削除する前後で以下のようにファイルIDの一覧を取得し、sdiffもしくはdiffで比較する事をおすすめします。

ファイルID削除前後の処理
utligen -f filename -i snd -id “*” > before_sndid.txt

削除コマンド発行

utligen -f filename -i snd -id “*” > after_sndid.txt

sdiff -s before_sndid.txt after_sndid.txt

上記のような形で提携作業化すれば、前後で間違って削除してしまったものがないかを確認できます。

上記全てのコマンドを含めてシェル化してしまっても良いでしょう。

まとめ:for文やwhile文を利用した複数削除の考慮を

utlirmの使い方についての説明いかがでしたでしょうか?

10個程度であればファイルIDの削除もコマンド作成でできると思いますが、さすがに100個、200個となってくると毎回コマンドを作るのは面倒ですし時間もかかります。

for文やwhile文を利用した削除シェルを作る事によって大幅に時間短縮できますので試してみてくださいね。

また上述した方法以外にもエクセルマクロを作ってコマンド生成マクロを用意しておくなどの方法もあると思いますので、環境にあわせた手法を用意してみてはいかがでしょうか。

スポンサーリンク