我想找到一个x, 并将后面的 0 个或多个空格 ( \s*) 替换为一个空格。
echo "x ax" | sed 's/x\s*/x /'
Run Code Online (Sandbox Code Playgroud)
出于某种原因,它没有用单个空格替换空格,而是将一个空格附加到之前存在的空格中:
x ax
Run Code Online (Sandbox Code Playgroud)
不管我使用了标志,使用+替代*似乎绝对没有-E。
似乎sed没有做非贪婪的表达式,那么为什么*在匹配时不消耗所有空格?
我是非 bash 设置中的正则表达式忍者,但 bash 及其工具让我活着。我不知道如何为成功的搜索引擎查询简洁地表达这一点。
我需要用文本填充具有特定文件名(递归)的所有文件。在 zsh 中,这可以通过
echo SomeText > **/TheFileName
Run Code Online (Sandbox Code Playgroud)
我搜索 sh 兼容和/或 tcsh shell 的通用解决方案。有没有比以下命令更短/更简单的方法?
find . -name "TheFileName" -print0 | xargs -0 sed -n -i -e '1c\nSomeText'
Run Code Online (Sandbox Code Playgroud) 有没有比echo "$PWD//" | sed -e 's#//\+#/#g'用单个斜杠替换重复斜杠更 Bashist 的方法?
感谢Steven D,现在有一个完整的功能可以找到两个或多个路径的最长公共路径:path_common。
在规范中如何替换文件中的字符串?在3. 仅当在特定上下文中找到字符串时才替换,我试图在文件中用空格替换管道,其结构如下:
12/12/2000|23:16:03|Shell Sc|8332|START|TEXT|WITH|SPACES|-|[END]|[Something else]
Run Code Online (Sandbox Code Playgroud)
我需要这样:
12/12/2000|23:16:03|Shell Sc|8332|START TEXT WITH SPACES -|[END]|[Something else]
Run Code Online (Sandbox Code Playgroud)
编码:
echo "12/12/2000|23:16:03|Shell Sc|8332|START|TEXT|WITH|SPACES|-|[END]|[Something else]" | \
sed 's/\(START.*\)\|/ \1/g'
Run Code Online (Sandbox Code Playgroud)
有任何想法吗 ?
我想通过查找特定字符串来替换 .CSV 文件(使用 awk)的第三列的内容,并用另一个带有单引号的字符串替换并将其输出复制到另一个文件中。关于我做错了什么的任何建议?
例如:
column1, coluumn2, coulumn3, column4, column5
1, item1, WALMART, 2.39, 50
2, item2, TARGET, 4.99, 52
3, item3, SAMS CLUB, 8.19, 15
4, item4, KROGER, 12.49, 33
5, item6, WEGMANS, 32.69, 75
6, item6, TARGET, 12.99, 25
7, item7, SAMS CLUB, 8.19, 92
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下 awk 但不起作用:
awk '{gsub("SAMS CLUB","SAM\'S CLUB",$3);print}' filename1 > filename2
Run Code Online (Sandbox Code Playgroud) 我有一些最初在 Windows 上开发的 C 源代码。现在我想在 Linux 上处理它。有大量的包含指令应该更改为 Linux 格式,例如:
#include "..\includes\common.h"
Run Code Online (Sandbox Code Playgroud)
我要寻找一个命令行要经过所有.h和.c文件,找到包含指令,并用斜杠替换任何反斜杠。
要打印部分字符串,请替换,为.I use 命令:
echo "${q:16:6}" | sed 's/,/./'
Run Code Online (Sandbox Code Playgroud)
是否可以使用类似的东西:
echo "${q:16:6/,/.}"
Run Code Online (Sandbox Code Playgroud)
因为它不起作用?
我有一堆配置文件,如下所示:
reader_0 = newcamd({
name = "Oct 1",
host = "hostname 1",
port = 27020,
user = "UNAME",
pass = "password1",
key = "0102030405060708091011121314",
})
reader_1 = newcamd({
name = "Oct 2",
host = "hostname 2",
port = 27020,
user = "UNAME",
pass = "password2",
key = "0102030405060708091011121314",
})
Run Code Online (Sandbox Code Playgroud)
如何使用sed将“reader_1”部分中的端口号 27020 替换为另一个端口号,例如 22443 ?
谢谢你。
这是我未能掌握的一般主题的具体示例。
多年来,我一直使用 regex 和 sed 递归地查找/替换目录中所有文件中出现的所有字符串,使用如下所示:
#FIND $GLOBALS['timechecks'] and REPLACE with completely_different_string
shopt -s globstar dotglob;
for file in /var/www/**/*; do
if [[ -f $file ]] && [[ -w $file ]]; then
sed -i -- 's/\$GLOBALS\['\''timechecks'\''\]/completely_different_string/g' "$file"
fi
done
Run Code Online (Sandbox Code Playgroud)
问题是,在我不知道的情况下,在 bash 中使用 Regex 有一些基本的东西。结果,我无法找出特定示例的解决方案。
目标字符串我被卡住的地方
$GLOBALS['timechecks']=addTimeCheck_sparky($GLOBALS['timechecks'], number_format(microtime(true),6,'.',''), __LINE__, basename(__FILE__));
Run Code Online (Sandbox Code Playgroud)
正则表达式我想出了不工作
这只是我的脚本中的 sed 行以及我想出的搜索正则表达式,但无济于事。
\$GLOBALS\['\''timechecks'\''\]=addTimeCheck_sparky[(]$GLOBALS\['\''timechecks'\''\][,][ ]number_format[(]microtime[(]true[)][,]6[,]'\''\.'\''[,]'\'''\''[)][,][ ]__LINE__[],[ ]basename[(]__FILE__[)][)][;]
Run Code Online (Sandbox Code Playgroud)
正则表达式调试器
我在这个例子中使用了一个正则表达式调试器,它显示了正则表达式找到我的目标字符串,但它对我不起作用。调试器位于此链接。这是它显示的查找我的目标字符串的正则表达式:
\$GLOBALS\['timechecks\'\]=addTimeCheck_sparky\(\$GLOBALS\[\'timechecks\'\], number_format\(microtime\(true\),6,\'\.\',''\), __LINE__, basename\(__FILE__\)\)
Run Code Online (Sandbox Code Playgroud)
正则表达式调试器的输出问题:
首先,我在 de 中尝试了我的正则表达式
我认为我对将有效的正则表达式从调试器转换为在 …
我有file1.csv
"word 1"
""
"word 3"
""
"word 5"
"word 6"
Run Code Online (Sandbox Code Playgroud)
和file2.csv
"replacement text 1"
"replacement text 2"
"replacement text 3"
"replacement text 4"
"replacement text 5"
"replacement text 6"
Run Code Online (Sandbox Code Playgroud)
我正在寻找一个命令来检查 file1 中是否有空行(或带有“”的行),然后将其替换为 file2 的内容。
输出.csv应该是
"word 1"
"replacement text 2"
"word 3"
"replacement text 4"
"word 5"
"word 6"
Run Code Online (Sandbox Code Playgroud)