二重の「ペアの始まり」を「バス」に置き換えます。

二重の「ペアの始まり」を「バス」に置き換えます。

コードブロックを含むマークダウンファイルがあります。

[310]から: !cat data.md

**File Permission Related Commands**

These commands are used to change permissions of the files

```
72. chmod octal file-name                : Changes the permissions of file to octal
    chmod 777 /data/test.c                   : Sets rwx permission for owner , group and others
```

**Network Related Commands**

These commands are used to view and edit network configurations related aspects of the system

```
75. ifconfig -a        : Displays all network interface and set ip address
76. ifconfig eth0      : Displays eth0 ethernet port ip address and details
```

**Compression / Archive Related Commands**

These commands are used to compress and decompress files

```
89. tar cf home.tar  home         : Creates a tar named home.tar containing home/
    tar xf file.tar               : Extracts the files from file.tar
    tar czf  file.tar.gz  files   : Creates a tar with gzip compression

```開始(トリプル洞窟)を```bash編集者が色でデモンストレーションするマークアップシェルスクリプトに置き換えたいと思います。

私は答えを試しました。

In [327]: !sed 's/^(```)/(```bash)/g' data.md                                                                     
**File Permission Related Commands**

These commands are used to change permissions of the files

```
72. chmod octal file-name                : Changes the permissions of file to octal
    chmod 777 /data/test.c                   : Sets rwx permission for owner , group and others

しかし、開口部は```交換されませんでした。

そのようなタスクをどのように実行できますか?

ベストアンサー1

```他のすべての行をに置き換えるには、```bashawkを使用する方が簡単です。

awk '$0 == "```" && alt = 1 - alt {$0 = "```bash"}; {print}' < file

変えるすべて ```つまり、次のようになります。

sed 's/^```$/&bash/'

完全一致がある場合は、一致を明示的にキャプチャする必要はありません(ただし;で実行され、\(...\)一部のor実装(...)でサポートされている拡張正規表現を使用している場合にのみ機能します)。完全一致がキャプチャされるからです。sed-E-r&

フラグは必要ありませんg。このgフラグは、次の項目をすべて置き換えます。オンライン^ただし、ここではおよびを使用してパターンを行の先頭と末尾に固定するため、1行に1回しか表示できません$

sed交換するその他すべて行では、次のようにできます。

sed '
  /^```$/ {
    s//&bash/;:1
    n;//!b1
  }'

一行:

sed -e '/^```$/ {s//&bash/;:1' -e 'n;//!b1' -e '}'

GNU実装を使用すると、sed次のように短縮できます。

sed '/^```$/{s//&bash/;:1;n;//!b1}'

(しかし、これはPOSIXly標準構文ではなく、sedコマンドの後にコードを含めることはできません。:b;}

おすすめ記事