我是 Bash 脚本的新手,一直在寻找一个正确的答案,以了解如何在第 n 次出现后使用 sed 替换任何内容(而不是替换第 n 次出现)。
例如,如果我想更改第二个空格之后的任何内容,我会将以下句子作为输入:Today is a good day
并将以下句子作为结果:今天是星期五
有什么想法吗?
最佳答案
您可以使用:
s='Today is a good day'
echo "$s" | sed 's/^\(\([^[:space:]]\+[[:space:]]\+\)\{3\}\)[^[:space:]]\+[[:space:]]\+/\1fri/'
Today is a friday
使用 -r
简化:
cho "$s" | sed -r 's/^((\S+\s+){3})\S+\s+/\1fri/'
Today is a friday
关于regex - sed 在第 n 次出现后替换任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28180426/