在sed中操纵与
是否可以在sed中操纵符号?我想给文件中的所有数字加+1。大概是这样的:在sed中操纵与,sed,ampersand,Sed,Ampersand,是否可以在sed中操纵符号?我想给文件中的所有数字加+1。大概是这样的: sed -i "s/[0-9]\{1,2\}/$(expr & + 1)/g" filename 编辑:今天我使用grep和sed创建了一个循环,完成了所需的工作。但是,如果有人知道如何操作符号and,这个问题仍然存在,因为这不是我第一次想在替换字符串上运行命令,而且不能sed需要在每一行上发出一些shell命令(带“!”)来执行此操作 在这里,您认为您正在调用sed,sed然后调用shell来计算每行的$(ex
sed -i "s/[0-9]\{1,2\}/$(expr & + 1)/g" filename
编辑:今天我使用grep和sed创建了一个循环,完成了所需的工作。但是,如果有人知道如何操作符号and,这个问题仍然存在,因为这不是我第一次想在替换字符串上运行命令,而且不能sed需要在每一行上发出一些shell命令(带“!”)来执行此操作 在这里,您认为您正在调用sed,sed然后调用shell来计算每行的
$(expr&+1)
,但实际上它不是<代码>$(expr&+1)将由外壳静态计算(一次),并导致错误,因为“&”在该点不是一个数字
要真正做到这一点,请:
好问题。smci首先回答了问题,并且对贝壳的问题非常了解 如果您想大体上解决这个问题,下面是一个示例中嵌入的Ruby解决方案(为了好玩):
echo "hdf 4 fs 88\n5 22 sdf lsd 6" | ruby -e 'ARGF.each {|line| puts line.gsub(/(\d+)/) {|n| n.to_i+1}}'
输出应该是
hdf 5 fs 89\n6 23 sdf lsd 7
您可以使用
e
修饰符来实现这一点:
$ cat test.txt
1
2
$ sed 's/^[0-9]\{1,2\}$/expr & + 1/e' test.txt
2
3
在这种情况下,您应该在替换部件中构造命令,该命令将被执行,结果将用于替换。谢谢!我没有安装ruby!不值得只为这个安装!我不明白!像这样的?sed“1,$!”s/[0-9]\{1,2\}/'$(expr&+1)/g'文件名我现在无法访问UNIX shell,您必须对其进行一些操作。就快到了!该文件不仅包含数字。它也有括号,所以我得到:sh:Syntax error:(“未预料到的抱歉没有正确解释:内容是混合的:$vbx02->pack_start($hbx01);从来都不知道这个!它总是在sed中吗?@teresa-e-junior
e
在这种情况下不应该工作。(我认为最好是显示输入数据和期望的输出来说明问题。)@php编码器大多数代码行如下所示:$vbx02->pack_start($hbx01)
和$btn03=GtkButton::new_from_stock(Gtk::stock_CANCEL);