sed - 如何使用 sed 仅替换文件中的特定空格?
问题描述
我在一个文件中有这个内容,我想用管道符号(|
)替换某些位置的空格。我为此使用了sed,但它正在替换字符串中的所有空格。但我不想替换第 3 和第 4 个字符串的空间。
如何做到这一点?
输入:
test test test test
我的尝试:
sed -e 's/ /|/g file.txt
预期输出:
test|test|test test
实际输出:
test|test|test|test
解决方案
sed 's/ /\
/3;y/\n / |/'
由于换行符不能出现在 sed 模式空间中,您可以将第三个空格更改为换行符,然后将所有换行符和空格更改为空格和管道。
GNU sed 可以\n
在替换文本中使用:
sed 's/ /\n/3;y/\n / |/'
推荐阅读
- jquery - 用jquery延迟href执行
- css - LinearProgress 栏正在接管整个提示
- boost - 如何使用 lldb 将数据成员 char 数组漂亮地打印为字符串(如在 boost::static_string 中)?
- html - 在 HTML/CSS 中制作响应式表格
- kotlin - 为什么 Kotlin 多平台项目的 commonMain 可以访问 kotlin.jvm 包?
- php - 使用 PrestaShop 中的 ps_linklist 模块创建链接?
- python - 在数据帧的每一行上应用函数并同时增加一个计数器
- xml - 递归遍历节点的 RML 映射,每次都附加父属性
- linux - 如何连续 grep 日志文件并使用单行命令打印到 shell
- swift - 在 UITesting 中获取 SKProducts