ファイルから特定の拡張子で終わる文字列を削除する

ファイルから特定の拡張子で終わる文字列を削除する

ファイルから.sqlエントリを削除する必要があります。

.classと.sqlで終わる文字列を含むファイルがあります。ファイルから.sqlで終わる文字列だけを削除するだけです。

ファイル.txt

actual.class
actual1.class
actual2.class
actual3.class
actual4.class
test.sql
test2.sql
test3.sql
test4.sql
test5.sql

私の予想される出力ファイルは次のとおりです

actual.class
actual1.class
actual2.class
actual3.class
actual4.class

以下のスクリプトを使用しましたが、達成できませんでした。

for i in `cat file.txt` ; do
    fname=`echo ${i} | cut -d "." -f1`
    echo ${fname}
    if file=${fname}.sql
    then
    sed "/${fname}.sql/d" file.txt > output_file.txt
    else
    exit 0
    fi
done

上記のスクリプトは以下の出力を取得します。

actual.class
actual1.class
actual2.class
actual3.class
actual4.class
test.sql
test2.sql
test3.sql

ベストアンサー1

grep解決策:

grep -q '.\.sql$' file.txt && grep -v '\.sql$' file.txt > output_file.txt

grep2番目のステートメント/コマンドは、最初のステートメント/コマンドが終了ステータス0を返した場合にのみ実行されます(パターンに一致するケースが見つかった場合)。0.\.sql$


最終output_file.txtコンテンツ:

actual.class
actual1.class
actual2.class
actual3.class
actual4.class

おすすめ記事