首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >sed从行尾删除字符模式?

sed从行尾删除字符模式?
EN

Stack Overflow用户
提问于 2011-09-19 19:11:57
回答 3查看 6.4K关注 0票数 2

我在这里看到了几个例子,这些例子与我的要求很接近,但并不完全是这样。

我有一些管道分隔的平面文件,这些文件有一些无关的列数据,我想使用sed删除这些数据。基本结构如下:

代码语言:javascript
代码运行次数:0
运行
复制
Column1|Column2|Column3|ignore
data1|data2|data3|ignore
data4|data5|data6|ignore

我想要一个使用sed的表达式,它将产生:

代码语言:javascript
代码运行次数:0
运行
复制
Column1|Column2|Column3
data1|data2|data3
data4|data5|data6

这应该是愚蠢的简单,但像往常一样,正则表达式和sed会伤害我的大脑。我以为这会成功的:

代码语言:javascript
代码运行次数:0
运行
复制
sed "s/\|ignore//" table1.txt >filtered.txt

但这似乎没什么用。我做错了什么?

注意:这是GNU for Windows。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-09-19 19:16:36

别从管子里逃出来。

代码语言:javascript
代码运行次数:0
运行
复制
$ sed 's/|ignore//' table1.txt > filtered.txt

在我的机器上工作。(GNU on Cygwin.)

这里的想法是,\|是regex管道,而不是文字管道。我不太知道如何解决这些问题,但是要在sed regex中使用({|,必须将它们转义。但是[是不会转义的,除非你想要文字字符。

票数 3
EN

Stack Overflow用户

发布于 2011-09-19 19:17:05

\|更改为|。你不想要另一种选择,你想要一个文字管道。

或者,如果使用\|,则将-r传递给sed以指示您希望使用扩展语法。

票数 3
EN

Stack Overflow用户

发布于 2011-09-19 19:20:03

几种可能的解决方案这里。还有,为什么不使用剪切呢?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7476045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档