文字列と比較した後、.txtファイルから1行を削除しますか?

文字列と比較した後、.txtファイルから1行を削除しますか?

CentOS 6.9システムで作業しながら、bashスクリプトに少し錆びました。私がやろうとしていることを詳しく説明する前に、参照用にこれまでのコードは次のようになります。

#!/bin/bash

package_name="<>"
yum list all > all_packages.txt
len=`expr length "$package_name"`
string=$((len-1))

while IFS= read -r line || "$line"; do
if [[${line:0:$string = $package_name}]]
then <>

私の究極の目標は、ユーザーが削除するパッケージを定義し、現在インストールされているパッケージをテキストファイルに保存し、そのファイルの行を比較して、指定されたパッケージに対応する行を確認し、新しいテキストファイルとして保存することです。 。 let "yum Remove"コマンドは、テキストファイル全体を繰り返してパッケージ全体を削除します。

私が今やっていることは、ユーザーが削除したいパッケージを取得し、その文字列の長さを取得してから、各行の最初のX文字をパッケージ自体と比較することです。一致しない場合は、行を削除して移動します。次の行に行きます。

この段階で私の問題は、指定されたパッケージと一致しない行を削除する方法がわからないことです。私がオンラインで見たところによると、「sed」または「grep」を使って行うことができますが、まだそれ以上ではありません。

すべての助けに事前に感謝!誠にありがとうございます!

ベストアンサー1

注意してくださいXYの問題

依存関係でのみインストールされたパッケージを削除したい場合は、これを行うことがyumできます。 eclipseが他のパッケージを依存関係としてインストールしますが、そのパッケージの名前に "eclipse"が含まれていない場合はどうなりますか?文字列の一致はこれには役立ちません。

から、ユーザーが手動でインストールしておらず、不要になったすべてのパッケージが削除されますman yum。不要になった対応するパッケージとその依存関係のみが削除されます。yum autoremoveyum autoremove mypackage

使用時に自動的に削除するyum removeには。"clean_requirements_on_remove=1"/etc/yum.conf

おすすめ記事