草庐IT

linux - Sed 命令适用于 Linux,但不适用于 OS X

我在Linux上使用这个sed命令来修补一个文件,它工作正常:sed-i-r"s/(\tpublicfunction__call.*)/\1\n\t\treturnnull;/"rb.php但是当我在OSX上尝试这个命令时,我得到一个错误:sed:1:"s/(\tpublicfunction__...":\1notdefinedintheRE那么,有人可以帮我制作在Linux和OSX上都可以运行的命令吗?顺便说一下,我试过这样的命令:sed-i''-r"s/(\tpublicfunction__call.*)/\1\n\t\treturnnull;/"rb.php但它不适用于Linux

linux - Sed 命令 : how to replace if exists else just insert?

这个问题在这里已经有了答案:Appendingalinetoafileonlyifitdoesnotalreadyexist(23个回答)关闭去年。我需要在一个文件中编辑几行,这样如果一行以(av或avpgw)开头,则将其替换为新文本,否则只需在开头插入新文本。我如何使用sed执行此操作?

linux - 为什么 sed 会因国际字符而失败以及如何修复?

GNUsed版本4.1.5似乎无法使用国际字符。这是我的输入文件:GrasOchStenarTrad-FromMojatoMinneapolisDVD[G2007DVD]7812|XGrasOchStenarTrad-FromMöjatoMinneapolisDVD[G2007DVD]7812|Y(注意第二行的元音变音。)当我这样做的时候sed's/.*|//'我希望只看到X和Y,因为我要求删除'|'之前的所有字符和超越它的空间。相反,我得到:XGrasOchStenarTrad-FromM?Y我知道我可以使用tr删除国际字符。首先,有没有办法只使用sed?

linux - 在 sed 中插入制表符的正确方法是什么?

在sed中插入制表符的正确方法是什么?我正在使用sed将标题行插入到流中。我可能可以在之后使用正则表达式替换一些字符以放入制表符中,但是有更好的方法吗?例如,假设我有:some_command|sed'1itextTABtext'我希望第一行看起来像这样(文本由制表符分隔):texttext我已经尝试将上面命令中的TAB替换为“\t”、“\x09”、“”(制表符本身)。我试过带双引号和不带双引号,但我无法让sed在文本之间插入制表符。我正尝试在SLES9中执行此操作。 最佳答案 假设bash(也许其他shell也可以):some_c

html - sed 从 html 文件中删除标签

我需要使用sed命令从带有bash脚本的html中删除所有标签。我试过这个sed-r's/[\]//g'$1还有这个sed-r's/[\]//g'$1但我还是想念一些东西,有什么建议吗?? 最佳答案 您可以使用众多HTMLtotextconverters之一,尽可能使用Perl正则表达式或者如果它必须是sed使用]*>sed-e's/]*>//g'file.html如果没有错误的余地,请改用HTML解析器。例如。当一个元素分布在两行时Loremipsum这个正则表达式将不起作用。这个正则表达式由三部分组成,[^>]*,>搜索空缺后跟

linux - 使用 sed 在每行的开头插入文本

如何使用sed来插入rm-rf在文件每一行的开头? 最佳答案 sed's/^/rm-rf/'filename编辑Xargs是删除另一个文件中列出的所有文件的更简单方法xargs-afilenamerm-rf 关于linux-使用sed在每行的开头插入文本,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4080526/

regex - sed -E 和 sed -e 有什么区别

我正在处理一些旧代码,我发现我曾经使用过sed-E's/findText/replaceWith/g'#findTextwouldcontainaregex但我现在试试sed-e's/findText/replaceWith/g'它似乎在做同样的事情,是吗?我有点记得我这样做是有原因的,但我不记得了,做“mansed”并没有帮助,因为他们没有任何关于-Eonly-e的东西,这没有多大意义。-e,--expression=scriptAppendtheeditingcommandsinscripttotheendoftheeditingcommandscript.scriptmaycon

linux - 使用 sed 从/proc/*/environ weirdness with\x00 获取环境变量

我正在尝试通过其他一些进程环境获取特定的环境变量。所以我一直在尝试像这样的sed命令:sed-n"s/\x00ENV_VAR_NAME=\([^\x00]*\)\x00/\1/p"/proc/pid/environ但我得到的是完整环境文件的输出。如果我只用静态字符串替换\1,我会得到该字符串加上整个环境文件:sed-n"s/\x00ENV_VAR_NAME=\([^\x00]*\)\x00/BLAHBLAH/p"/proc/pid/environ我应该在最后一个例子中得到“BLAHBLAH”。如果我去掉空字符并使用其他一些测试数据集,就不会发生这种情况。这促使我尝试将\x00转换为\x

linux - 替换 sed 中的控制字符

我需要在linux的文本文件中替换所有出现的控制字符CTRL+A(SOH/ascii1),这在SED中如何实现? 最佳答案 尝试:sed's/^A/foo/g'file使用Ctrl+V+A在上述命令中创建^A序列。 关于linux-替换sed中的控制字符,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/13180057/

regex - 使用 sed 匹配模式并从该行删除到文件末尾

我正在尝试匹配来自管道输入和/或文件的模式,然后从匹配的行中删除到文件末尾,包括在内。我到处寻找,但似乎找不到适合我需要的表达方式。下面的表达式允许我删除到流的开头,包括匹配的模式:sed-e'1,/Files:/d'给定一些示例数据:BlahblahblahFoobarfoofooFiles:somefiles.tar.gz123somefiles.tar.gz123-----THISSTUFFISUSELESS-----BLEHBLEHBLEHBLEHBLEHBLEH运行上面的表达式会产生:Files:somefiles.tar.gz123somefiles.tar.gz123--