私はユーザーリストを含むプロパティファイルを操作しています。
[email protected],[email protected]
[email protected],[email protected]
[email protected]
[email protected]
[email protected]
今すぐ削除したい場合[Eメール保護]AdminListでのみ可能です。 Linuxでsedまたはawkを使用してこれをどのように実行できますか? Linux初心者ですが、助けてください
編集:全体の価値部分を削除したくありません。特定の文字列だけを削除したいです。たとえば、私のファイルが次のような場合:
[email protected],[email protected]
[email protected],[email protected]
[email protected]
[email protected],[email protected],[email protected],[email protected]
[email protected]
この場合は、単に取り除きたいです。[Eメール保護]管理者リストから
ベストアンサー1
ケース1:完全な「値」部分の削除
ファイルに「単純な」key=value
文だけが含まれているとします。つまり、「値」部分には以下が含まれています。いいえ =
sed
次のように使用できるフラグ:
sed '/^AdminList/s/=.*$/=/' propertyfile.txt
例の出力は次のとおりです。
[email protected],[email protected]
[email protected],[email protected]
[email protected]
AdminList=
[email protected]
ここでのアイデアは、s
コマンドで で構成された式を変えて、=
そのあとに.*
行末まで(記号)まで、望みの数の文字(部分)が続くようにすることです。ただし、 で始まるラインでのみ可能です。$
=
AdminList
ケース2:値リストから特定の値に対する消費税控除
カンマ区切りリストから1つの特定の値のみを削除するにはawk
- ベースのアプローチをお勧めします。
awk '/^AdminList/ {sub(/[email protected],?/,""); print;next} {print}' propertyfile.txt
AdminList
これは、パターンで始まる行と一致し、空の文字列が[email protected]
続く行を,
置き換え、変更された行を印刷し、実行のために次の行にジャンプします。他のすべての行については、単に行全体を印刷します。
2番目の入力例を考えると、次のような結果が得られます。
[email protected],[email protected]
[email protected],[email protected]
[email protected]
[email protected],[email protected],[email protected]
[email protected]
選択した構文はかなり移植性が必要です。 GNU AwkとMawkを使ってテストしました。