ファイルから.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
grep
2番目のステートメント/コマンドは、最初のステートメント/コマンドが終了ステータス0を返した場合にのみ実行されます(パターンに一致するケースが見つかった場合)。0
.\.sql$
最終output_file.txt
コンテンツ:
actual.class
actual1.class
actual2.class
actual3.class
actual4.class