동일한 문자만 포함된 모든 줄을 찾아 동일한 수의 다른 문자로 바꿉니다.

동일한 문자만 포함된 모든 줄을 찾아 동일한 수의 다른 문자로 바꿉니다.

내 목표는 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 ~]#

관련 정보