문자열과 비교한 후 .txt 파일에서 한 줄을 삭제하시겠습니까?

문자열과 비교한 후 .txt 파일에서 한 줄을 삭제하시겠습니까?

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

관련 정보