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
还有一种更简单的尝试find
(rust
也在开发中):
FD。