Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何解析sed命令的每一个匹配项

如何解析sed命令的每一个匹配项
EN

Stack Overflow用户
提问于 2019-02-06 13:33:55
回答 3查看 122关注 0票数 0

我有一个字符串[u'SOMEVALUE1', u'SOMEVALUE2', u'SOMEVALUE3'],我想解析与我的sed命令匹配的每个元素。匹配的元素在单引号中。这是我的脚本

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/bin/bash
ARR="[u'SOMEVALUE1', u'SOMEVALUE1', u'SOMEVALUE1']"
for id in $(sed -n "s/^.*'\(.*\)'.*$/\1/ p" <<< ${ARR});
do
    echo "$id"
done

我只返回了第一个值。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-02-06 13:41:34

通配符.*将匹配最左边最长的字符串。如果您的意图是匹配单引号中的各个子字符串,请尝试

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
grep -o "'[^']*'" <<<"$ARR"

要删除值两边的单引号,只需通过管道连接到sed "s/'//g",并循环通过管道打印的行,执行以下操作

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
... commands ... |
while read -r id; do
    : things with "$id"
done
票数 1
EN

Stack Overflow用户

发布于 2019-02-06 13:58:32

BASH可以在=~ (参见man bash)的帮助下匹配正则表达式。多次匹配有点痛苦,但在您的示例中,我们可以将输入拆分为空格,然后每项匹配一次:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ARR="[u'SOMEVALUE1', u'SOMEVALUE1', u'SOMEVALUE1']"
for A in $ARR
do
    [[ $A =~ u\'(.+)\' ]] && echo ${BASH_REMATCH[1]}
done

结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SOMEVALUE1
SOMEVALUE1
SOMEVALUE1
票数 1
EN

Stack Overflow用户

发布于 2019-02-06 15:13:26

这就是你要做的吗?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ ARR="[u'SOMEVALUE1', u'SOMEVALUE1', u'SOMEVALUE1']"

$ awk -v RS="'" '!(NR%2)' <<< "$ARR"
SOMEVALUE1
SOMEVALUE1
SOMEVALUE1

$ awk -v RS="'" '!(NR%2)' <<< "$ARR" |
while IFS= read -r id; do echo "id=$id"; done
id=SOMEVALUE1
id=SOMEVALUE1
id=SOMEVALUE1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54554881

复制
相关文章
sed中的正则匹配
sed很早就支持正则表达式了,这在文件处理中非常有用,以下列出一些常见用法(GNU SED版本)。
生信编程日常
2020/06/29
7.4K0
sed命令
  使用sed匹配字符串,将需要匹配的字符串写在//里,-n的作用是只打印匹配的行,其他行不打印,p的作用是打印的意思:
端碗吹水
2020/09/23
6370
sed命令
sed命令
sed命令是利用脚本来处理文本文件,可依照脚本的指令来处理、编辑文本文件,主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。
WindRunnerMax
2021/01/06
7560
Linux的sed命令
Linux sed 命令是利用脚本来处理文本文件。sed 可依照脚本的指令来处理、编辑文本文件。Sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。
狼啸风云
2019/11/05
4.1K0
sed命令学习
sed 是一个行编辑器,一次匹配一行 最常用的参数-i 将修改的结果直接写回文件 常用命令 p 打印 d 删除 s 替换  sed 's/123/456/g' 替换全部123为456 sed 's/123/456/1' 替换每行第一个123为456 sed 's/123/456/2' 替换每行第二个123为456
力哥聊运维与云计算
2019/06/28
4890
sed命令学习
其中-n代表只输出模式匹配的行,s代表替换,p代表把匹配的行输出。 对比验证参数作用:
平凡的学生族
2020/04/16
7100
Shell sed命令
语法:sed 选项 's/搜索的内容/替换的内容/动作' 需要处理的文件 动作一般是打印p和全局替换g
剧终
2020/08/26
1.4K0
LinuxShell命令sed
sed 是 Linux系统自带的流式编辑器(流式编辑器是指处理处理输入流或文本流中的数据),不同于普通的交互式文本编辑器(比如 vim),sed 编辑器根据命令来处理数据流中的数据。
hotarugali
2022/02/28
1.1K0
LinuxShell命令sed
Linux 命令 | sed
sed 命令一般不会对原始文件进行修改,而是将修改后的结果输出到标准输出流中,如果需要修改原始文件,则使用-i选项。
小林C语言
2023/09/14
2140
Linux 命令 | sed
sed命令实例
sed命令行格式为: sed [-nefri] 'command 输入文本 常用选项: - -n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自STDIN的资料一般都会被列出到
程裕强
2018/01/02
6600
Sed 命令详解
sed是stream editor的简称,也就是流编辑器。它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。
Allen Cheng
2018/09/10
9820
Sed 命令详解
sed 删除命令
删除/etc/passwd中的不能登录的用户(筛选条件:/sbin/nologin)
用户1217611
2022/05/06
1.3K0
sed 删除命令
Sed命令的基本使用
该文介绍了sed命令的基本使用,包括打印匹配行、替换匹配行、从文件中读取并写入到输出中等常用用法,以及使用修饰符进行更高级的文本处理。同时还介绍了sed命令的常用选项和例子,以及与其他文本处理工具的对比。
GavinZhou
2018/01/02
1.2K0
Linux sed 命令的使用
首先,就昨晚的发的消息道歉,虽然整蛊大家了,但是我还是挺开心的。 sed是一种流编辑器,配合正则表达式使用,sed处理文件之时,把当前处理的文保存在缓冲区,sed命令处理缓冲区的内容,将缓冲区的内容显示在到屏幕上,sed能够对一些重复操作的动作进行简化。 先来了解一下sed的命令格式 sed [options] 'command' filesname sed [options] -f scriptfilename filesname sed的命令 a \ 在当前行下面插入文本 i \ 在当前行
赵腰静
2018/03/09
3.2K0
Linux sed命令的应用
昨天在处理一个日常运维工单的时候,出现了一个问题,大概是这样的:快到双十一了,公司需要拓展业务,开发的同事想要在一个数据库里面的所有表中添加几个字段,给的SQL原型如下,其中的数据库名称、表名称、字段名称以及注释我简单进行了修改:
AsiaYe
2019/11/06
2.4K0
Linux sed命令的应用
Linux命令(3)——sed命令
sed(Stream EDitor)是一种流文件编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,直到文件末尾。文件内容并没有改变,除非使用-i选项。sed主要用来编辑一个或多个文件,简化对文件的反复操作或者用来编写转换程序等。
恋喵大鲤鱼
2018/08/03
3.2K0
Linux命令(3)——sed命令
sed(Stream EDitor)是一种流文件编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(Pattern Space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕,接着处理下一行,直到文件末尾。文件内容并没有改变,除非使用-i选项。sed主要用来编辑一个或多个文件,简化对文件的反复操作或者用来编写转换程序等。
恋喵大鲤鱼
2019/02/22
1.7K0
Linux命令之sed
先来说说sed命令的原理和一些概念,sed之所以能以行为单位的编辑或修改文本,其原因在于它使用了两个空间:一个是活动的“模式空间(pattern space)”,另一个是起辅助作用的“暂存缓冲区(holdingspace)这2个空间的使用。
AsiaYe
2019/11/06
3.6K0
linux sed命令详解
sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。
sunsky
2020/08/19
4.1K0
Linux:sed命令详解
1. 简介 sed 是非交互式的编辑器。它不会修改文件,除非使用 shell 重定向来保存结果。默认情况下,所有的输出行都被打印到屏幕上。 sed 编辑器逐行处理文件(或输入),并将结果发送到屏幕。具
张戈
2018/03/23
7.1K0
Linux:sed命令详解

相似问题

如何让gcc生成旋转指令?

11

让GCC在使用向量扩展时生成PTEST指令

39

gcc可以在没有交叉编译的情况下为Arm生成二进制文件吗

13

如何让GCC像ICC一样生成向量指令?

14

无法在没有主键的情况下为模型生成模块

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文