gpt4 book ai didi

unix - 使用 sed 解释为固定字符串/文字而不是正则表达式

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:26:01 25 4
gpt4 key购买 nike

grep 有一个固定的字符串选项,-F (fgrep) 可以关闭搜索字符串的正则表达式解释。sed 是否有类似的工具?我在这个人身上找不到任何东西。推荐另一个 gnu/linux 工具也可以。

我正在使用 sed 来实现查找和替换功能:sed -i "s/abc/def/g"

最佳答案

你必须使用 sed 吗?如果你正在编写 bash 脚本,你可以这样做

#!/bin/bash

pattern='abc'
replace='def'
file=/path/to/file
tmpfile="${TMPDIR:-/tmp}/$( basename "$file" ).$$"

while read -r line
do
echo "${line//$pattern/$replace}"
done < "$file" > "$tmpfile" && mv "$tmpfile" "$file"

使用较旧的 Bourne shell(例如 ksh88 或 POSIX sh),您可能没有那么酷的 ${var/pattern/replace} 结构,但您确实拥有 ${var #pattern}${var%pattern},可用于拆分字符串然后重新组合。如果您需要这样做,您需要编写更多代码 - 但它确实还不错。

如果您还没有使用 shell 脚本,您可以很容易地创建模式、替换和文件名参数,然后调用它。 :)

PS:${TMPDIR:-/tmp} 结构使用 $TMPDIR 如果在您的环境中设置,或者如果变量未设置则使用/tmp .我喜欢将当前进程的 PID 贴在文件名的末尾,希望它会更独特一些。您可能应该在“现实世界”中使用 mktemp 或类似的东西,但这对于快速示例来说是可以的,并且 mktemp 二进制文件并不总是可用。

关于unix - 使用 sed 解释为固定字符串/文字而不是正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34953569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com