标签: substitution

当我用sh运行它时,为什么我的bash代码会失败?

我有一行代码可以在我的终端中正常工作:

for i in *.mp4; do echo ffmpeg -i "$i" "${i/.mp4/.mp3}"; done
Run Code Online (Sandbox Code Playgroud)

然后我在脚本中放入完全相同的代码行myscript.sh:

#!/bin/sh
for i in *.mp4; do echo ffmpeg -i "$i" "${i/.mp4/.mp3}"; done
Run Code Online (Sandbox Code Playgroud)

但是,现在运行时出现错误:

$ sh myscript.sh
myscript.sh: 2: myscript.sh: Bad substitution
Run Code Online (Sandbox Code Playgroud)

基于其他问题,我尝试将shebang更改为#!/bin/bash,但我得到完全相同的错误.为什么我不能运行这个脚本?

bash sh substitution

34
推荐指数
2
解决办法
7万
查看次数

替换bash变量中的换行符?

我试图用cdargs包理解"cdargs-bash.sh"脚本.我在以下函数中有一个问题:

function _cdargs_get_dir ()
{
local bookmark extrapath
# if there is one exact match (possibly with extra path info after it),
# then just use that match without calling cdargs
if [ -e "$HOME/.cdargs" ]; then
    dir=`/bin/grep "^$1 " "$HOME/.cdargs"`
    if [ -z "$dir" ]; then
        bookmark="${1/\/*/}"
        if [ "$bookmark" != "$1" ]; then
            dir=`/bin/grep "^$bookmark " "$HOME/.cdargs"`
            extrapath=`echo "$1" | /bin/sed 's#^[^/]*/#/#'`
        fi
    fi
    [ -n "$dir" ] && dir=`echo "$dir" | /bin/sed 's/^[^ ]* //'`
fi
if …
Run Code Online (Sandbox Code Playgroud)

bash newline substitution

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

如何使sed删除与替换不匹配的行

我基本上想要这样做:

cat file | grep '<expression>' | sed 's/<expression>/<replacement>/g'
Run Code Online (Sandbox Code Playgroud)

无需两次写表达式:

cat file | sed 's/<expression>/<replacement>/g'
Run Code Online (Sandbox Code Playgroud)

有没有办法告诉sed不要打印与substitute命令中的正则表达式不匹配的行?

regex sed substitution

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

如何在Vim中重复替换命令?

在Unix中,^允许您重复一个命令,其中一些文本替换为新文本.例如:

csh% grep "stuff" file1 >> Results
grep "stuff" file1
csh% ^file1^file2^
grep "stuff" file2
csh%
Run Code Online (Sandbox Code Playgroud)

是否有Vim等价物?很多时候,我发现自己在命令行上一遍又一遍地编辑小事.

vim history repeat substitution

22
推荐指数
5
解决办法
8060
查看次数

如何将换行符放在GVim正则表达式的替换中

我在Windows 7上使用GVim.

我想通过使用正则表达式替换来学习如何放置换行符.为此,我尝试使用\ r和\n元字符,但替换文本不显示正常的换行符.

例如,一开始我有:

line 1
line 2
Run Code Online (Sandbox Code Playgroud)

在替换之前

我使用以下替换表达式:

:%s/\n/\n\n/g
Run Code Online (Sandbox Code Playgroud)

然后GVim生成以下文本:

line 1^@^@line 2^@^@
Run Code Online (Sandbox Code Playgroud)

用\n替换为换行符后

相反,如果我在替换表达式中使用\ r \n

:%s/\n/\r\n/g
Run Code Online (Sandbox Code Playgroud)

然后GVim生成以下文本:

line 1
^@line 2
^@
Run Code Online (Sandbox Code Playgroud)

用\ r \n替换为换行符后

那些^ @字符是什么?

如何正确使用替换表达式中的换行符?

regex vim newline substitution

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

在VIM中添加换行后的换行符

我有一个css文件,我希望每次都添加一个空行}.

我怎么能在Vim中这样做?

regex vi vim replace substitution

21
推荐指数
3
解决办法
1万
查看次数

使用subshel​​l和substring打击坏替换

一个人为的例子......给出了

FOO="/foo/bar/baz"
Run Code Online (Sandbox Code Playgroud)

这工作(在bash中)

BAR=$(basename $FOO) # result is BAR="baz"
BAZ=${BAR:0:1}       # result is BAZ="b"
Run Code Online (Sandbox Code Playgroud)

这不

BAZ=${$(basename $FOO):0:1} # result is bad substitution
Run Code Online (Sandbox Code Playgroud)

我的问题是哪个规则导致这个[子shell替换]评估不正确?如果有的话,在1跳中执行此操作的正确方法是什么?

string bash substitution subshell

19
推荐指数
3
解决办法
4万
查看次数

在lapply?deparse(substitute(x))?

我想使用一个使用标准deparse(substitute(x))技巧的函数lapply.不幸的是,我只是得到了循环的论证.这是我完全没用的可重复的例子:

# some test data
a <- 5
b <- 6 
li <- list(a1=a,b2=b)

# my test function
tf <- function(obj){
nm <- deparse(substitute(obj))
res <- list(myName=nm)
res
}

tf(a)
#returns
$myName
[1] "a"
Run Code Online (Sandbox Code Playgroud)

这很好.如果我使用lapply我得到[[1L]]x匿名函数的参数.

lapply(li,function(x) tf(x))
# returns
$a1
$a1$myName
[1] "x"


$b2
$b2$myName
[1] "x"
Run Code Online (Sandbox Code Playgroud)

有没有办法获得以下?

$a1
$a1$myName
[1] "a1"


$b2
$b2$myName
[1] "b1"
Run Code Online (Sandbox Code Playgroud)

如果有更一般的东西deparse(substitute(x)),lapply我也渴望知道.

编辑:问题,而不是使用接受多个参数的匿名函数,因此可以使用对象的名称和对象本身不起作用,因为该tf函数只接受一个参数.所以在这里不起作用......

r substitution lapply

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

Excel在单元格值中转义引号或撇号

我从excel电子表格中的客户端获得了大量数据库信息.我经常需要将这些数据插入/更新回数据库.

我经常使用excel通过将一堆单元连接在一起来生成插入和更新语句.有时,数据包括可以在其中包含单引号的文本单元格.如果不仔细处理,这些单引号将使SQL语句中断.

当将一堆单元格值连接在一起时,如何通过公式转义文本数据中的单引号,以便生成的SQL脚本有效?

sql excel replace substitution apostrophe

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

reST/Sphinx中链接内的替换

我正在使用Sphinx来记录将部署在不同服务器中的Web服务.该文档中包含用户单击的URL示例,它们应该可以正常工作.我的问题是主机,端口和部署根目录会有所不同,必须为每个部署重新生成文档.

我尝试定义这样的替换:

|base_url|/path
.. |base_url| replace:: http://localhost:8080
Run Code Online (Sandbox Code Playgroud)

但生成的HTML不是我想要的(在生成的链接中不包括"/ path"):

<a href="http://localhost:8080">http://localhost:8080</a>/path
Run Code Online (Sandbox Code Playgroud)

有人知道如何解决这个问题吗?

python documentation restructuredtext substitution python-sphinx

18
推荐指数
2
解决办法
4378
查看次数