标准差

标准差

sed伪代码:

sed
    "FROM"
        $to = ".*";$
    "TO"
        $to = "'"$new_email_address"'";
    "GLOBAL"
FILE_PATH
  • 只允许换行
  • 允许制表符缩进
  • 没有必要使用单线分割
  • 没有必要像下面那样将命令用引号括起来sed "/s/X/Y/g" FILE
  • 使用如上例所示的数据结构"'"$new_email_address"'"会更容易,因为它不会位于已经用引号标记的密集长行内;此外,可以使用一些新字符来完成换行,仅适用于其中包含变量扩展的字符串 ( STRING_WITH_VARIABLEEXPANSION data STRING_WITH_VARIABLEEXPANSION),而不是混合引号

我很乐意使用这样的 a sed,因为我发现它比常规语法更容易访问和有序,因此标题中的问题。

答案1

我知道有人尝试开发一种更易于访问的sed.然而,它并不完全是你想要的。

标准差

直观地查找和替换 CLI(sed替代方案)rust

它的功能有限(与 相比sed),并且肯定存在源于其简单性的缺陷。如果您想要超能力,您最好了解更多有关sed和其他实用程序的信息。我已经sd在 Fedora 34(适用于dnf install sd)和 Ubuntu 21.04(使用 Ubuntu 我已经安装了 Cargo 和依赖项 : )下进行了测试build-essential


用逗号替换换行符:

sd: sd '\n' ',' input.txt
sed: sed -i ':a;N;$!ba;s/\n/,/g' input.txt

sd这种情况下的语法与 相同tr

tr '\n' ',' < input.txt

就地修改文件:

sd: sd before after file.txt
sd: sd 'before this' 'after that' file.txt
sed -i 's/before/after/g' file.txt

从包含斜杠的字符串中提取内容:

# Strings between () are groups.

echo "sample with /path/" | sd '.*(/.*/)' '$1'
/path/

echo "sample with /path/" | sd '(.*)/.*/' '$1'
sample with

# Capture two groups and invert.
echo "sample with /path/" | sd '(.*)(/.*/)' '$2$1'
/path/sample with

echo 'lots((([]))) of special chars' | sd -s '((([])))' ''
lots of special chars
    -s, --string-mode
            Treat expressions as non-regex strings
        

多行替换:

sd 'test\nmultiline' 'this\ntest'  input.txt

另外一个选择 :

-p, --preview
  Output result into stdout and do not modify files

还有一种更简单的尝试findrust也在开发中): FD

相关内容