小编Ben*_* W.的帖子

如何在sed命令中使用变量?

我有abc.sh:

exec $ROOT/Subsystem/xyz.sh
Run Code Online (Sandbox Code Playgroud)

在Unix机器上,如果我打印,echo $HOME那么我得到/HOME/COM/FILE.

我想更换$ROOT$HOME使用sed的.

预期产出:

exec /HOME/COM/FILE/Subsystem/xyz.sh
Run Code Online (Sandbox Code Playgroud)

我试过了,但我没有得到预期的输出:

sed  's/$ROOT/"${HOME}"/g' abc.sh > abc.sh.1
Run Code Online (Sandbox Code Playgroud)

加成:

如果我有 abc.sh

exec $ROOT/Subsystem/xyz.sh $ROOT/ystem/xyz1.sh
Run Code Online (Sandbox Code Playgroud)

然后用

sed "s|\$INSTALLROOT/|${INSTALLROOT}|" abc.sh
Run Code Online (Sandbox Code Playgroud)

它只是首先替换$ROOT,即输出即将到来

exec /HOME/COM/FILE/Subsystem/xyz.sh $ROOT/ystem/xyz1.sh
Run Code Online (Sandbox Code Playgroud)

unix sed

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

使用tr用空格替换换行符

有输出sed:

http://sitename.com/galleries/83450
72-profile
Run Code Online (Sandbox Code Playgroud)

这两个字符串应合并为一个并用空格分隔,如:

http://sitename.com/galleries/83450 72-profile
Run Code Online (Sandbox Code Playgroud)

两个字符串是流水线的tr,以便用空格替换换行符:

tr '\n' ' '
Run Code Online (Sandbox Code Playgroud)

并且它不起作用,结果与输入相同.

使用ASCII代码指示空间会'\032'导致替换\n为不可打印的字符.

怎么了?我在Windows上使用Git Bash.

replace newline space tr git-bash

51
推荐指数
1
解决办法
14万
查看次数

将系统命令的输出分配给变量

我想system在awk脚本中运行该命令并将其输出存储在变量中.我一直试图这样做,但命令的输出总是进入shell而我无法捕获它.关于如何做到这一点的任何想法?

例:

$ date | awk --field-separator=! {$1 = system("strip $1"); /*more processing*/}
Run Code Online (Sandbox Code Playgroud)

应该调用strip系统命令而不是将输出发送到shell,应该将输出分配回来$1进行更多处理.现在是Rignt,它将输出发送到shell并将命令的retcode分配给$1.

awk pipe

47
推荐指数
5
解决办法
8万
查看次数

如何cd进入名称中带空格的目录?

我尝试了很多东西.见下文:

尝试进入目录:/ cygdrive/c/Users/my dir/Documents

$ DOCS="/cygdrive/c/Users/my\ dir/Documents"

$ echo $DOCS
/cygdrive/c/Users/my\ dir/Documents

$ cd $DOCS
-bash: cd: /cygdrive/c/Users/my\: No such file or directory

$ cd /cygdrive/c/Users/my\ dir/Documents
(success)
Run Code Online (Sandbox Code Playgroud)

非常奇怪的行为.当我手动输入时,退格会执行其转义字符.但是当我使用变量DOCS的参数扩展时.
我尝试了其他变体,例如没有反斜杠.

$ DOCS=/cygdrive/c/Users/Rahman\ dir/Documents

$ echo $DOCS
/cygdrive/c/Users/my dir/Documents

$ cd $DOCS
-bash: cd: /cygdrive/c/Users/my: No such file or directory
Run Code Online (Sandbox Code Playgroud)

要么

$ DOCS="/cygdrive/c/Users/my dir/Documents"

$ echo $DOCS
/cygdrive/c/Users/my dir/Documents

$ cd $DOCS
-bash: cd: /cygdrive/c/Users/my: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我知道这是可能的.看这里:

$ echo $HOME
/home/my dir
Run Code Online (Sandbox Code Playgroud)

[编辑]正如所指出的,cd $ HOME也不起作用.引号必须放在它周围.

有没有搞错:

$ …
Run Code Online (Sandbox Code Playgroud)

bash cygwin cd

47
推荐指数
4
解决办法
7万
查看次数

重命名多个文件,但只重命名Bash中的部分文件名

我知道如何重命名文件等,但我遇到了麻烦.

我只需要test-this在for循环中重命名.

test-this.ext
test-this.volume001+02.ext
test-this.volume002+04.ext 
test-this.volume003+08.ext 
test-this.volume004+16.ext 
test-this.volume005+32.ext 
test-this.volume006+64.ext 
test-this.volume007+78.ext 
Run Code Online (Sandbox Code Playgroud)

bash file-rename

47
推荐指数
4
解决办法
6万
查看次数

要在电子表格应用程序中打开CSV文件的mimetype设置

我的应用程序允许用户将其数据下载为CSV文件.这些应该在电子表格应用程序中打开.在Linux系统上,我被提示正确使用OpenOffice打开,但我的一些用户抱怨说,当他们下载文件时,它不会自动打开Excel,而是要求他们选择应用程序.当他们从其他网站下载CSV时,它会在Excel中正确打开.

我正在设置:
mimetype:text/csv
content_disposition:attachment; filename.csv

csv http mime-types

46
推荐指数
1
解决办法
5万
查看次数

使用bash脚本修改配置文件

我正在编写一个bash脚本来修改包含一堆键/值对的配置文件.如何读取密钥并找到值并可能修改它?

bash configuration-files

46
推荐指数
3
解决办法
8万
查看次数

我在GNU sed中使用前瞻性正则表达式有什么问题?

这就是我正在做的(简化示例):

gsed -i -E 's/^(?!foo)(.*)$/bar\1/' file.txt
Run Code Online (Sandbox Code Playgroud)

我试图把bar每一行都放在前面foo.这是错误:

gsed: -e expression #1, char 22: Invalid preceding regular expression
Run Code Online (Sandbox Code Playgroud)

怎么了?

regex linux sed regex-lookarounds

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

Windows 10 - Bash(Ubuntu)SU(Root密码)

最近更新到Windows 10,安装了Ubuntu Bash.想要开始配置,但我已经碰壁了.

安装后,系统会要求您输入帐户的用户名和密码.这会创建用户级别.

是否可以访问root用户,SU?

每次我尝试,它都会要求输入密码,而且PC上的任何帐户都不起作用(即Windows 10管理员帐户密码不起作用).尝试了默认密码等,都失败了.

原因是在查看用户主目录时:创建文件时,它会在我的Windows用户帐户(权限)下创建它.

但是当我查看从Bash创建的文件时,它们是为Root用户创建的.

所以这是混乱,我修改了bashrc它,它不再由root拥有,所以它无法访问.

但是我无法登录root来创建或修改文件.

我是一个完整的菜鸟还是什么? 在此输入图像描述

什么时候bashrc不归Root所有,加载Bash.exe时我得到.bashrc Input/output error.

bash windows-10 windows-subsystem-for-linux

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

如何在bash中将变量的值用作另一个变量的名称

我想声明一个变量,其名称来自另一个变量的值,我编写了以下代码:

a="bbb"
$a="ccc"
Run Code Online (Sandbox Code Playgroud)

但它不起作用.完成这项工作的正确方法是什么?

bash

42
推荐指数
6
解决办法
7万
查看次数