入力例:
[email protected] [email protected],[email protected]
出力例:
[email protected] [email protected],[email protected]
したがって、「通常の」状況では、次のことが明らかに簡単です。
sed 's/.com/.org/g'
しかし、明らかに、この場合は、最初の列のサフィックスにのみ作業したいと思いますが、2番目の列は変更されずに維持されることを望みます。
私はあなたがどんなツールを提案しても構いません。しかし、私は追加のインストールなしで標準のLinuxで利用できることを好みます(つまり、またはsed
同じawk
ことがperl
望ましいでしょうbobsobscuretoolthatneedsinstalling
)。
ベストアンサー1
.com
の最初の項目だけに置き換えるには、.org
sed演算子のデフォルトの動作だけが必要ですs///
。そのフラグを使用しないでくださいg
。
$ sed 's/.com/.org/' file
[email protected] [email protected],[email protected]
最初のカンマで定義されたフィールドのみを変更して、最初のフィールドが行の.com
別の場所に表示されても変更されていないままにしたい場合は、次のようにします。
$ perl -pe 's/^(\S+)\.com/$1.org/' file
[email protected] [email protected],[email protected]
または、部分文字列として表示される場合com
(たとえば)、foo.common.net
より安全です。
$ perl -pe 's/^(\S+)\.com\b/$1.org/' file
[email protected] [email protected],[email protected]
またはGNU sedから:
$ sed -E 's/^(\S+)\.com\b/\1.org/' file
[email protected] [email protected],[email protected]
または移植可能(最初のフィールドが最初のフィールドによって定義されていると仮定)スペースタブまたは他のスペースの代わりに):
$ sed -E 's/^([^ ])\.com /\1.org /' file
[email protected] [email protected],[email protected]