各行の末尾にパターンを検索、置換、追加する方法

各行の末尾にパターンを検索、置換、追加する方法

以下の項目のリストがあります。

bigBone
fishMarket
dogCollar
...

次のように2つの文字マップを作成する必要があります。

bigBone -> bb
fishMarket -> fm
dogCollar -> dc
...

を使用して上記のマッピングを作成するにはsed

私は同様のことを試しました:

sed -i -r 's/^([a-z]{1})[a-z]+([A-Z]{1})[a-zA-Z]+/ -> \1\L\2/' file

私は見たこの問題しかし、この概念をここにどのように統合するのかよくわかりません。ありがとうございます。

ベストアンサー1

私が正しく理解した場合は、行全体を維持して何かを追加したいと思います。

sed -r 's/^([a-z]{1})([a-z]+)([A-Z]{1})([a-zA-Z]+)$/\1\2\3\4 -> \1\L\3/' file

編集する:

devnullは私に簡単な解決策があることを思い出しました。

sed -r 's/^([a-z]{1})[a-z]+([A-Z]{1})[a-zA-Z]+/& -> \1\L\2/' file

または(最初の試みより)少し優雅に:

sed -r '
h
s/^([a-z]{1})[a-z]+([A-Z]{1})[a-zA-Z]+/ -> \1\L\2/
t append
b
: append
H
g
s/\n//' file

おすすめ記事