相关疑难解决方法(0)

如何使用sed替换换行符(\n)?

如何\n使用sed命令替换换行符()?

我没试成功:

sed 's#\n# #g' file
sed 's#^$# #g' file
Run Code Online (Sandbox Code Playgroud)

我如何解决它?

sed

1295
推荐指数
23
解决办法
157万
查看次数

在sed中非贪婪(不情愿)的正则表达式匹配?

我正在尝试使用sed清理URL行以仅提取域名..

所以来自:

http://www.suepearson.co.uk/product/174/71/3816/
Run Code Online (Sandbox Code Playgroud)

我想要:

http://www.suepearson.co.uk/

(有或没有火车斜线,没关系)

我试过了:

 sed 's|\(http:\/\/.*?\/\).*|\1|'
Run Code Online (Sandbox Code Playgroud)

和(逃避非贪婪量词)

sed 's|\(http:\/\/.*\?\/\).*|\1|'
Run Code Online (Sandbox Code Playgroud)

但我似乎无法使非贪婪量词工作,所以它总是最终匹配整个字符串.

regex pcre sed greedy regex-greedy

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

需要用于多行搜索的正则表达式(grep)

可能重复:
如何在文件中搜索多行模式?使用pcregrep

我正在运行a grep来查找任何*.sql文件,select其后跟单词customerName后跟单词from.此select语句可以跨越多行,并且可以包含制表符和换行符.

我在下面尝试了一些变化:

$ grep -liIr --include="*.sql" --exclude-dir="\.svn*" --regexp="select[a-zA-Z0-
9+\n\r]*customerName[a-zA-Z0-9+\n\r]*from"
Run Code Online (Sandbox Code Playgroud)

然而,这只是永远运行.请问有人能帮助我正确的语法吗?

regex linux grep cygwin

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

是否有一个指向GitHub的链接,用于在最新版本的存储库中下载文件?

使用GitHub的发布功能,可以提供下载特定版本的已发布软件的链接.但是,每次发布时,都需要更新gh页面.

有没有办法获得任何最新版软件的特定文件的链接?

例如,这将是一个静态链接:

https://github.com/USER/PROJECT/releases/download/v0.0.0/package.zip

我想要的是:

https://github.com/USER/PROJECT/releases/download/latest/package.zip

注意:此问题与GitHub最新版本之间的区别在于此问题 专门要求访问该文件,而不是GitHub最新版本页面

release github download github-pages

122
推荐指数
12
解决办法
5万
查看次数

grep -P不再有效.我怎样才能重写我的搜索?

看起来OSX的新版本不再支持grep -P,因此我的一些脚本停止工作.

var1=`grep -o -P '(?<=<st:italic>).*(?=</italic>)' file.txt`
Run Code Online (Sandbox Code Playgroud)

我需要将grep捕获到变量,我需要使用零宽度断言,以及 \K

var2=`grep -P -o '(property:)\K.*\d+(?=end)' file.txt`
Run Code Online (Sandbox Code Playgroud)

任何替代方案将不胜感激.

macos shell perl

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

使用grep在两个特定单词/字符之间获取字符串的模式

我需要从像这样的字符串中提取电子邮件地址(我正在创建一个日志解析器): <some text> from=someuser@somedomain.com, <some text>

egrep(或grep -Eo).所以字符串只需要在"from="和之间拉出",",因为日志的其他部分也包含电子邮件地址,比如to=etc

regex bash grep

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

Sed在两个字符串之间提取文本

请帮我使用sed.我有一个如下文件.

START=A
  xxxxx
  xxxxx
END
START=A
  xxxxx
  xxxxx
END
START=A
  xxxxx
  xxxxx
END
START=B
  xxxxx
  xxxxx
END
START=A
  xxxxx
  xxxxx
END
START=C
  xxxxx
  xxxxx
END
START=A
  xxxxx
  xxxxx
END
START=D
  xxxxx
  xxxxx
END
Run Code Online (Sandbox Code Playgroud)

我想在START = A,END之间得到文本.我使用了以下查询.

sed '/^START=A/, / ^END/!d' input_file
Run Code Online (Sandbox Code Playgroud)

这里的问题是,我得到了

START=A
  xxxxx
  xxxxx
END
START=D
  xxxxx
  xxxxx
END
Run Code Online (Sandbox Code Playgroud)

代替

START=A
  xxxxx
  xxxxx
END
Run Code Online (Sandbox Code Playgroud)

塞德贪婪地发现.

请帮我解决这个问题.

提前致谢.

我可以使用AWK实现上述目标吗?

regex shell awk sed

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

使用sed或awk重复提取两个字符串之间的文本?

我有一个名为'plainlinks'的文件,如下所示:

13080. ftp://ftp3.ncdc.noaa.gov/pub/data/noaa/999999-94092-2012.gz
13081. ftp://ftp3.ncdc.noaa.gov/pub/data/noaa/999999-94094-2012.gz
13082. ftp://ftp3.ncdc.noaa.gov/pub/data/noaa/999999-94096-2012.gz
13083. ftp://ftp3.ncdc.noaa.gov/pub/data/noaa/999999-94097-2012.gz
13084. ftp://ftp3.ncdc.noaa.gov/pub/data/noaa/999999-94098-2012.gz
13085. ftp://ftp3.ncdc.noaa.gov/pub/data/noaa/999999-94644-2012.gz
13086. ftp://ftp3.ncdc.noaa.gov/pub/data/noaa/999999-94645-2012.gz
13087. ftp://ftp3.ncdc.noaa.gov/pub/data/noaa/999999-94995-2012.gz
13088. ftp://ftp3.ncdc.noaa.gov/pub/data/noaa/999999-94996-2012.gz
13089. ftp://ftp3.ncdc.noaa.gov/pub/data/noaa/999999-96404-2012.gz
Run Code Online (Sandbox Code Playgroud)

我需要生成如下所示的输出:

999999-94092
999999-94094
999999-94096
999999-94097
999999-94098
999999-94644
999999-94645
999999-94995
999999-94996
999999-96404
Run Code Online (Sandbox Code Playgroud)

linux awk grep text-processing sed

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

如何在文本/模式的前两个实例之间获取单词?

输入:

===================================
v2.0.0

Added feature 3
Added feature 4
===================================
v1.0.0

Added feature 1
Added feature 2
===================================
Run Code Online (Sandbox Code Playgroud)

我想要的输出:

v2.0.0

Added feature 3
Added feature 4
Run Code Online (Sandbox Code Playgroud)

我尝试了这个,但是它得到了第一个等于(=)和最后一个等于(=),而我想得到的是第一个等于(=)的两个

linux bash awk grep sed

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

在不同行上的两个字符串之间提取文本

我有一个包含以下随机主机的大型电子邮件文件:

......
HOSTS: test-host,host2.domain.com,
host3.domain.com,another-testing-host,host.domain.
com,host.anotherdomain.net,host2.anotherdomain.net,
another-local-host, TEST-HOST

DATE: August 11 2015 9:00
.......
Run Code Online (Sandbox Code Playgroud)

主机总是用逗号分隔,但它们可以分成一行,两行或多行(我无法控制它,不幸的是,它是电子邮件客户端所做的).

所以我需要提取字符串"HOSTS:"和字符串"DATE:"之间的所有文本,将其包装起来,并用新行替换逗号,如下所示:

test-host
host2.domain.com
host3.domain.com
another-testing-host
host.domain.com
host.anotherdomain.net
host2.anotherdomain.net
another-local-host
TEST-HOST
Run Code Online (Sandbox Code Playgroud)

到目前为止,我想出了这个,但是我失去了与"HOSTS"在同一条线上的所有东西:

sed '/HOST/,/DATE/!d;//d' ${file} | tr -d '\n' | sed -E "s/,\s*/\n/g"
Run Code Online (Sandbox Code Playgroud)

bash awk sed

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

提取位于匹配模式之后或之间的字符串

给定一个字符串“pos:665181533 pts:11360 t:11.360000crop=720:568:0:4 还有一些词”

是否可以使用 bash 和 grep 在“crop=”和以下空格之间提取字符串?

因此,如果我匹配“crop =”,我如何在它之后和以下空白之前提取任何内容?

基本上,我需要打印“720:568:0:4”。

regex bash grep

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

使用AWK或SED在两个字符串之间提取数据

我正试图从一个包含它们的文件中提取数据/网址(在本例中为someurl),即.

xyz>someurl>xyz
Run Code Online (Sandbox Code Playgroud)

我不介意使用任何一个awksed.

awk sed

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

如何使用sed或awk在开始子字符串和结束子字符串的基础上提取行部分

我有一个文本没有空格的多行文件.

Thereisacat;whichisverycute.Thereisadog;whichisverycute.
Thereisacat;whichisverycute.Thereisadog;whichisverycute.
Run Code Online (Sandbox Code Playgroud)

我想提取猫和可爱之间的字符串(第一次出现不是第二次),即输出

;whichisvery
;whichisvery
Run Code Online (Sandbox Code Playgroud)

我接近得到它,但我最终得到了从猫到最后可爱的字符串从这里的命令.

sed -e 's/.*cat\(.*\)cute.*/\1/'
Run Code Online (Sandbox Code Playgroud)

我正进入(状态

;whichisverycute.Thereisadog;whichisvery
;whichisverycute.Thereisadog;whichisvery
Run Code Online (Sandbox Code Playgroud)

我如何从cat到第一次出现可爱的文字而不是最后?

linux awk sed data-analysis

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