我有一个包含代码块的降价文件
在 [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
为标记将由编辑器以彩色显示的 shell 脚本。
我尝试了答案。
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
但开口```
没有被替换。
我怎样才能完成这样的任务?
要用替换每一
```
行```bash
,使用 awk 可能更容易:要替换每一
```
行,那将是:当它是整个匹配时,无需显式捕获匹配(顺便说一句,
\(...\)
只有在启用某些实现(...)
支持的扩展正则表达式后才能工作or ),因为无论如何都会捕获整个匹配。sed
-E
-r
&
不需要
g
旗帜。该g
标志用于替换line 上的所有出现,但在这里,每行只能出现一次,因为我们使用 and 将模式锚定到该行的开头和^
结尾$
。使用
sed
, 替换每隔一行,你可以这样做:在一行中:
使用 的 GNU 实现
sed
,您可以将其缩短为:(但这不是 POSIXly 的标准语法,在, 或命令
sed
之后不能有任何代码,并且在 之前需要有一个或换行符)。:
b
;
}
已编辑
该命令
sed 's/^(```)/(```bash)/g'
不起作用,因为圆括号是按字面解释的。您可能必须像在
或者,您可以启用扩展的正则表达式:
这样圆括号就不需要转义了。
或者,只需删除圆括号:
要仅匹配开头
```
,您可以使用如下正则表达式:警告:如果在三重反引号序列之间发现`(反引号),它将失败。
它使用
--null-data
letsed
将输入视为单行(实际上,由空字符分隔的行),然后查找 ```-text-``` 序列以将它们替换为 ```bash-text-```。我会尝试类似的东西
您可以尝试对命令使用单引号
sed
:这用于避免从 bash 解释符号
但根据你的文件,你最好使用类似的东西: