同じ文字のみを含むすべての行を見つけ、同じ数の異なる文字に置き換えます。

同じ文字のみを含むすべての行を見つけ、同じ数の異なる文字に置き換えます。

私の目標は、appstream-util appdata-to-newsNEWS形式(の出力)をマークダウン形式(GitHub / GitLabで使用するため)に変換することです。

私にとって良い近似はここから始めることです。

Version 0.5.1
~~~~~~~~~~~~~
Released: 2019-01-03

 * This is a test with a ~ tilde ~~~~
 * Second line

これに関して

Version 0.5.1
=============
Released: 2019-01-03

 * This is a test with a ~ tilde ~~~~
 * Second line

しかし、現在のソリューションはtr '~' '='以下を提供します。

Version 0.5.1
=============
Released: 2019-01-03

 * This is a test with a = tilde ====
 * Second line

これを含むすべての行のみを見つける正規表現は、~次のようになります。^~*$ しかし、bash / sed / awkを使用して同じ番号をどのように変更しますか=

答え1

チルダのみを含む行でパターンマッチングを実行し、文字ごとに置換を実行できます。

sed '/^~*$/s/~/=/g'

答え2

以下のsedコマンドを試してみましたが、正常に動作します。

Command: sed '/Version/{n;s/~/=/g}' filename

金利

n_linux_example ~]# sed '/Version/{n;s/~/=/g}' filename
Version 0.5.1
=============
Released: 2019-01-03

 * This is a test with a ~ tilde ~~~~
 * Second line
[root@praveen_linux_example ~]#

関連情報