相关疑难解决方法(0)

如何在insert命令中更改'sed'斜杠(/)分隔符?

在如下所示的替换命令中将分隔符斜杠(/)更改为pipe(|)sed

echo hello | sed 's|hello|world|'
Run Code Online (Sandbox Code Playgroud)

如何在下面的insert命令中将分隔符斜杠(/)更改为pipe(|)sed

echo hello | sed '/hello/i world'
Run Code Online (Sandbox Code Playgroud)

sed

7
推荐指数
1
解决办法
5214
查看次数

如何更改sed认为的行分隔符

因为我是sed的新手,所以我很高兴看到sed不认为\ r \n字符是有效的行分隔符.

有没有人知道如何告诉sed在处理多行文本时,我希望将哪些字符用作行分隔符?

sed

6
推荐指数
1
解决办法
2758
查看次数

sed删除选项更改分隔符

我想从匹配某些字符串的文件中删除行.这些字符串包含斜杠,即'/'.我的问题是虽然您可以使用sed更改分隔符以进行替换,但您似乎无法使用delete选项执行此操作.

即因为$ x中的斜线,这不起作用:

sed --in-place "/$x/d" total-list.csv
Run Code Online (Sandbox Code Playgroud)

其中$ x例如是" http://someurl.com/uri ".但是在使用d选项时你似乎无法更改分隔符(例如,我需要它来代替/).

任何人都可以帮忙吗?

谢谢保罗

sed

6
推荐指数
1
解决办法
1750
查看次数

这个sed命令的含义是什么?sed's%^.*/%%'

我看到了一个bash命令 sed 's%^.*/%%'

通常sed的常用语法是sed 's/pattern/str/g',但在这一个中它用于s%^.*中的s部分's/pattern/str/g'.

我的问题:
什么s%^.*意思?第二部分是
什么意思?%%sed 's%^.*/%%'

linux bash sed

4
推荐指数
1
解决办法
3083
查看次数

忽略shell脚本中的正斜杠

我正在用这个命令编写一个shell脚本:

sed -e 's/OLD_ITEM/NEW_ITEM/g' 
Run Code Online (Sandbox Code Playgroud)

但我实际上想要做一些包含目录的事情:

sed -e 's/FOLDER/OLD_ITEM/NEW_ITEM/g'
Run Code Online (Sandbox Code Playgroud)

如何忽略正斜杠以便正确读取整行FOLDER/OLD_ITEM?

sed

4
推荐指数
2
解决办法
1万
查看次数

sed,foward斜线在引号中

我试图做一些bashsed被证明是非常困难的.

我有一个bash脚本,它的第一个参数是日期.

代码想要更改文本文件中的一行以包含传递的日期.这是代码

#!/bin/bash

cq_fname="%let outputfile="/user/cq_"$1".csv";"

sed "29s/.*/\"$ct_fname\"/" file1.sas > file2.sas
Run Code Online (Sandbox Code Playgroud)

这个脚本在第三行失败,我得到一些关于乱码的命令.有没有人知道一个聪明的方法让它工作?如何在引号中加入正斜杠sed

bash quotes escaping sed

2
推荐指数
1
解决办法
2302
查看次数

在unix中使用sed查找和替换

可能重复:
在sed replace中使用斜杠

我需要找到以下字符串/a/b/c并替换它/r/s/t

它是一个字符串而不是文件夹

/sam/pam/nancy - > /tim/cook/iphone

我在目录中,只需更新具有此行的多个文件.

unix sed

2
推荐指数
1
解决办法
9852
查看次数

在sed的替换字符串中使用文件的内容

我花了几个小时搜索,找不到解决方案.我有一个包含超过1,000个PHP文件的目录.我需要替换这些文件中的一些代码,如下所示:

查找:

session_register("CurWebsiteID");
Run Code Online (Sandbox Code Playgroud)

替换为(保存在replacement.txt中:

if(!function_exists ("session_register") && isset($_SERVER["DOCUMENT_ROOT"])){require_once($_SERVER["DOCUMENT_ROOT"]."/libraries/phpruntime/php_legacy_session_functions.php");} session_register("CurWebsiteID");
Run Code Online (Sandbox Code Playgroud)

使用下面的命令,我可以用$(cat replacement.txt)替换模式,而我正在寻找用文本文件的内容替换它们.

正在使用的命令:

find . -name "*.xml" | xargs -n 1 sed -i -e 's/mercy/$(cat replacement.txt)/g'

我也试过使用变量而replacement=code_above;运行调整后的版本,$(echo $replacement)但这也无济于事.

实现这一目标的正确方法是什么?

bash replace sed

2
推荐指数
1
解决办法
69
查看次数

什么是'/[AZ]/s| |/|gp' 是什么意思?

我正在https://riptutorial.com/sed/example/13753/lines-matching-regular-expression-pattern阅读 sed 教程。

好像

$ sed -n '/[A-Z]/ s| |/|gp' ip.txt
Run Code Online (Sandbox Code Playgroud)

正在从文件中过滤“Add Sub Mul Div”,并​​将其转换为“Add/Sub/Mul/Div”

考虑到我刚刚阅读了https://www.tldp.org/LDP/abs/html/x23170.html ,我真的不理解正则表达式。

它甚至不匹配打印语法,即:

[address-range]/p
Run Code Online (Sandbox Code Playgroud)

是管道符号'|' 这里交替?

谁能解释一下:

'/[A-Z]/ s| |/|gp'
Run Code Online (Sandbox Code Playgroud)

用英语?

编辑

我还发现 's' 之前和 '/' 之后的额外空格是允许的,并且不会做任何事情。正确的语法应该是:

[address-range]/s/pattern1/pattern2/
Run Code Online (Sandbox Code Playgroud)

sed模式的语法检查不严格,容易混淆

regex sed

2
推荐指数
1
解决办法
79
查看次数

使用任何东西作为sed或Perl正则表达式的输入?

如果我做

comment () { sed -i "/$1/s/^/$2 /g" $3 }

comment /dev/sysmsg '#' /tmp/1
comment '*.err'     '#' /tmp/1
Run Code Online (Sandbox Code Playgroud)

带输入文件

*.err;kern.notice;auth.notice   /dev/sysmsg
fff
ff
Run Code Online (Sandbox Code Playgroud)

然后它就像/sed分隔符中那样断开,*也被视为正则表达式.

有没有办法使它健壮,所以输入字符串$1可以包含我想要的任何东西?或者我需要转移到Perl?

linux bash perl sed

1
推荐指数
1
解决办法
104
查看次数

标签 统计

sed ×10

bash ×4

linux ×2

escaping ×1

perl ×1

quotes ×1

regex ×1

replace ×1

unix ×1