相关疑难解决方法(0)

如何在Bash中将变量设置为命令的输出?

我有一个非常简单的脚本,如下所示:

#!/bin/bash

VAR1="$1"
MOREF='sudo run command against $VAR1 | grep name | cut -c7-'

echo $MOREF
Run Code Online (Sandbox Code Playgroud)

当我从命令行运行此脚本并将参数传递给它时,我没有得到任何输出.但是,当我运行$MOREF变量中包含的命令时,我能够获得输出.

我想知道如何获取需要在脚本中运行的命令的结果,将其保存到变量,然后在屏幕上输出该变量?

bash shell command-line

1513
推荐指数
14
解决办法
170万
查看次数

如何在bash regex替换中引用捕获

如何在BASH中的替换表达式中包含正则表达式匹配?

非工作示例:

#!/bin/bash
name=joshua
echo ${name//[oa]/X\1}
Run Code Online (Sandbox Code Playgroud)

我期望输出jXoshuXa与\1由匹配的字符被替换.

这实际上并不起作用,jX1shuX1而是输出.

regex bash

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

Bash脚本正则表达式...如何查找和替换所有匹配?

我正在编写一个逐行读取文件的bash脚本.

该文件是.csv文件,其中包含DD/MM/YYYY格式的许多日期,但我想将它们更改为YYYY-MM-DD.

我想使用正则表达式匹配数据,并替换它,使文件中的所有日期都正确格式化为YYYY-MM-DD.

我相信这个正则表达式会匹配日期:

([0-9][0-9]?)/([0-9][0-9]?)/([0-9][0-9][0-9][0-9])
Run Code Online (Sandbox Code Playgroud)

但我不知道如何找到正则表达式匹配并用新格式替换它们,或者甚至可以在bash脚本中使用它.请帮忙!

regex bash shell search replace

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

如何使用"sed或awk"从bash中的行中删除最后一个逗号

嗨,我想删除一行中的最后一个逗号.例如:

输入:

This,is,a,test
Run Code Online (Sandbox Code Playgroud)

期望的输出:

This,is,a test
Run Code Online (Sandbox Code Playgroud)

我可以使用下面的命令删除最后一个逗号,如果它也是字符串的最后一个字符:(但这不是我想要的)

echo "This,is,a,test," |sed 's/,$//'
This,is,a,test
Run Code Online (Sandbox Code Playgroud)

如果在行中最后一个逗号后面有更多字符,则相同命令不起作用.

echo "This,is,a,test" |sed 's/,$//'
This,is,a,test
Run Code Online (Sandbox Code Playgroud)

我可以通过调用多个命令以脏方式实现结果,使用awk或sed正则表达式实现相同的任何替代方法?(这是我想要的)

echo "This,is,a,test" |rev |sed 's/,/ /' |rev
This,is,a test
Run Code Online (Sandbox Code Playgroud)

bash awk sed

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

用 Bash 正则表达式匹配词边界

我想在 bash 中匹配以下表达式:

^.*(\b((720p)|(1080p)|(((br)|(hd)|(bd)|(web)|(dvd))rip)|((x|h)264)|(DVDscr)|(xvid)|(hdtv)|(ac3)|(s[0-9]{2}e[0-9]{2})|(avi)|(mp4)|(mkv)|(eztv)|(YIFY))\b).*$

我真的只想知道被测试的字符串中的一个词是否是这个正则表达式中描述的词之一(720p, 1080p, brrip, ...)。而且这个词的边界似乎有问题。

我使用的测试是[[ $name =~ $re ]] && echo "yes"where$name是任何字符串,$re是我的正则表达式。

我错过了什么?

regex bash word-boundary

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

使用bash查找并替换json文件中的值

我有几个.json与此类似的文件。

{
    "AcquisitionNumber": 1,
    "TotalReadoutTime": 0.035,
    "IntendedFor": "func/sub-02_task-rest_run-01_bold.nii.gz"
}
Run Code Online (Sandbox Code Playgroud)

我想使用 bash 变量更改“IntendedFor”行中的 sub 编号,循环遍历不同的 subs。例如,如果 sub 是 03:

sub=03
echo $sub
03
Run Code Online (Sandbox Code Playgroud)

如何使用此 bash 变量更改sub-02to的值sub-03?

bash json

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

标签 统计

bash ×6

regex ×3

shell ×2

awk ×1

command-line ×1

json ×1

replace ×1

search ×1

sed ×1

word-boundary ×1