使用 sed 在 '=' 之后返回值

发布于 2024-12-11 01:35:33 字数 176 浏览 0 评论 0原文

一直在阅读 Unix 中的 sed 命令,我认为它会做我想要的事情,只是不确定它的疯狂语法。

基本上,我只想获取文件最后一行中 Count= 后面括号内的值。因此,该行中将有一个 Count=[#] 并且我只想返回 #。有什么想法吗? sed 是最好的选择吗(听说 awk 可能会做类似的事情)?

been reading up on the sed command in Unix and I think it will do what I want it to, just not sure on its crazy syntax.

Basically, I want to get just the value inside brackets after Count= in the last line of a file. So, in the line there will be a Count=[#] and I want just the # to be returned. Any thoughts? Is sed even the best choice (heard awk might do something similar)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

許願樹丅啲祈禱 2024-12-18 01:35:33

稍微不同的方法:

echo 'Count=[#]' | sed 's/.*\[\(.*\)\].*/\1/'

这匹配 [] 之间的文本,并用它替换整行。

A slightly different approach:

echo 'Count=[#]' | sed 's/.*\[\(.*\)\].*/\1/'

This matches the text between the [ and ], and replaces the entire line with it.

梦境 2024-12-18 01:35:33

还有另一种方法:

sed -n '$ {s/Count=\[\([^]]\+\)\]/\1/;p}' yourfile

-n 不打印,除非使用 p

$ 表示最后一行。

s/search/replace/ 搜索将被替换。

\([^]]\+\) 捕获一个或多个出现的 not ']' ^]

\1 指的是捕获的内容。

p 打印行。

考虑到任何行中可能出现 Count=[#] ,我所看到的这是唯一的答案。您声明这仅发生在最后一行:“在文件最后一行的 Count= 之后。”

Yet another approach:

sed -n '$ {s/Count=\[\([^]]\+\)\]/\1/;p}' yourfile

-n don't print except with p.

$ for the last row.

s/search/replace/ search will be replaced by replace.

\([^]]\+\) capture one or more occurrence of not ']' ^].

\1 is referring to what was captured.

p print line.

What I can see this is the only answer taking into account that there might come Count=[#] in any row. You state that this is to happen only for the last row: ' after Count= in the last line of a file.'

天赋异禀 2024-12-18 01:35:33
kent$  echo "Count=[#]"|awk -F'[][]' '{print $2}'
#


kent$  echo "Count=[#]"|sed -r 's/.*\[(.*)\].*/\1/'
#
kent$  echo "Count=[#]"|awk -F'[][]' '{print $2}'
#


kent$  echo "Count=[#]"|sed -r 's/.*\[(.*)\].*/\1/'
#
羁绊已千年 2024-12-18 01:35:33

使用 sed,只需使用几个正则表达式来删除您不需要的部分:

sed -e 's/^Count=\[//' -e 's/\]$//' < file.txt

或者

sed 's/^Count=\[//;s/\]$//' < file.txt

第一个表达式将删除 Count=[,第二个表达式将删除尾随的 ].

With sed, just use a couple of regular expressions to remove the part you don't want:

sed -e 's/^Count=\[//' -e 's/\]$//' < file.txt

or

sed 's/^Count=\[//;s/\]$//' < file.txt

The first expression will remove Count=[ and the second expression will remove the trailing ].

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文