次のような URL のリストを含むファイルがあります:
www.dell.com/any=abc&anyone=bcd
www.google.co.in
www.yahoo.com/abc=fgh
これらは等号までのデータのみを表示しているので、クリーンアップしたいと思います。たとえば、上記は次のようになります。
www.dell.com/any=
www.dell.com/any=abc&anyone=
www.google.co.in
www.yahoo.com/abc=
Python や bash などでこのようなコードをクリーンアップするためのスクリプトの提案はありますか?
答え1
私の理解が正しければ、次の変換を適用したいことになります。
- 行に が含まれていない場合は
=
何もしない - 行に が1つだけ含まれている場合は
=
、それ以降のすべてを削除します。=
- 行に複数の が含まれている場合は
=
、 がなくなるまで前のステップを繰り返し実行し、各ステップで中間結果を出力します。
その方法の 1 つを以下に示します。
#!/usr/bin/env bash
while read line; do
if [[ "$line" == *=* ]]; then
while [[ "$line" == *=* ]]; do
line=${line%=*}
echo $line=
done
else
echo $line
fi
done
これをファイルに保存するとscript.sh
、次のように使用できます。
./script.sh < input.txt
これにより、質問で尋ねた出力が生成されます。