コードブロックを含むマークダウンファイルがあります。
[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
```
他のすべての行をに置き換えるには、```bash
awkを使用する方が簡単です。
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
;
}