在每行末尾添加 /

qbq*_*qbq 0 filesystems sed files

我想在文件中每一行的末尾添加这个字符:

sed -e 's/$/\/$/g' myfile.txt > myfile_new.txt
Run Code Online (Sandbox Code Playgroud)

结果$/在每一行中添加显式 $。但我不想添加 $.

例如,这是原始文件中的一行:

https://myline
Run Code Online (Sandbox Code Playgroud)

我执行了命令,结果变成:

https://myline/$
Run Code Online (Sandbox Code Playgroud)

但我想要:

https://myline/
Run Code Online (Sandbox Code Playgroud)

怎么了?请注意,该文件最初是dos类型的,我将其转换为unix使用:

dos2unix myfile.txt
Run Code Online (Sandbox Code Playgroud)

mur*_*uru 5

您只需要's/$/\//'- 将模式$ 锚定到行尾,但它不是可以替换的实际字符。对于^. 您实际匹配(和替换)的是锚定在行尾的空模式。

同样正如@Phillippos 在评论中所指出的,g这里是不必要的:由于表达式是锚定的,它只能在一个地方匹配。

  • 1) 由于每行只有一个行尾,因此不需要 `g` 选项(适用于所有锚定模式) 2) 如果模式或替换包含斜杠,最好使用不同的分隔符:`s_$ _/_` 更容易阅读。 (5认同)