Linux对文件操作的命令--sed

将内容写入文件

将内容写入文件并覆盖之前的所有内容

echo "这是要写入并覆盖文件内容的内容" > fileName

将内容写入文件以追加的方式追加在文件的最后一行

echo "这是追加到文件最后一行的内容" >> fileName

将内容写入到文件指定内容

将内容写入到指定内容的上一行

sed -i '/指定内容/i\新内容' fileName
# 上面的-i 代表直接修改文件内容,否则只会在控制台输出预计修改之后的内容

将内容写入到指定内容下一行

sed -i '/指定内容/a\新内容' fileName

修改指定内容

sed -i 's/旧内容/新内容/g' fileName
# 直接将就内容替换成了新内容

如果修改的内容为多行可以指定开始行的开始内容和结束行的开始内容然后将中间的内容修改成新的内容

sed '/开始内容/,/结束内容/{//!d}; /开始内容/a 新内容' fileName
# `/开始内容/,/结束内容/`: 匹配“开始内容”到“结束内容”之间的所有行。
# `{//!d}`: 对于范围内的非起止行(即“开始内容”和“结束内容”之间的行),使用 d 命令删除它们。
# `/开始内容/a 新内容`: 在“开始内容”的下一行插入“新内容”。

如果修改的内容还包括开始内容和结束内容所在的行

sed '/开始内容/,/结束内容/c\新内容' fileName
# `/开始内容/,/结束内容/`: 匹配从“开始内容”到“结束内容”之间的所有行,包括这两个标记。
# `c\新内容`: 将整个匹配范围替换为“新内容”。

如果匹配的内容有多行,可以选择在匹配到第一个替换之后直接退出,默认会全部替换

sed '/开始内容/,/结束内容/c\新内容; q' example.txt
# 注意: sed 默认处理所有匹配的范围。如果您只想替换第一次匹配的内容,可以使用 q 命令在首次替换后退出

如果匹配的内容,开始内容或者结束内容之间有内容和开始内容在一行里面,但是我不要吧开始内容去掉,但是同一行的其他内容需要去掉
示例场景

开始内容 some data to remove
middle content
结束内容
sed -e '/开始内容/s/\(开始内容\).*/\1/' -e '/开始内容/,/结束内容/{//!d;}' -e '/结束内容/d' 文件名
# `/开始内容/s/\(开始内容\).*/\1/`: 这一部分匹配到 "开始内容" 行,将其后的所有内容删除,仅保留 "开始内容"。
# `/开始内容/,/结束内容/{//!d;}`: 这一部分删除 "开始内容" 和 "结束内容" 之间的所有行(不包含这两行)。
# `/结束内容/d`: 删除包含 "结束内容" 的行。

修改同一行里面的其他内容比如properties文件里面的等号后面的内容
示例场景

model=standalone

将上面的模式改为集群模式 cluster

sed -i 's/^model=.*/model=cluster/' fileName
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值