sed命令删除一些文本

时间:2017-04-13 14:02:21

标签: bash shell sed

很多论坛上都有几十个帖子处理命令“sed”。 不幸的是,没有一个教程,没有一个帖子解决了我的基本问题,我希望我终于在这里找到解决方案:))

就是这样,我有几百行像这样:

INSERT [dbo].[TABLE_ONE] ([TABLE_ONE_ID], [TABLE_ONE_MNEMO], [TABLE_ONE_DESC], [AUTO_ANALYSIS], [SCOPE_LEVEL], [IN_ABV], [TABLE_ONE_ORDER], [REPORT_ETE]) VALUES (204, N'PERFO TEST', N'PERFO TEST', N'N', 1, 0, 999, N'70')

我只想删除字符串'dbo'和N前缀,所以我想替换:

204, N'PERFO TEST', N'PERFO TEST', N'N', 1, 0, 999, N'70'

by:

204, 'PERFO TEST', 'PERFO TEST', 'N', 1, 0, 999, '70'

对于'dbo'字符串,我找到了一个解决方案,但我不喜欢它,因为如果文本中还有另一个d,另一个b或另一个o,它们也将被删除。

sed -i 's/[dbo]//g' file

现在,如果我遵循这些说明,根据教程(http://www.theunixschool.com/2014/08/sed-examples-remove-delete-chars-from-line-file.html),它应该可以工作,但它不会:

sed -i 's/dbo//g' file

它只是......什么都不做!所以如果你有更好的解决方案,那就太棒了!

现在,对于N前缀,我只想删除昏迷后的所有字母N,就像上面的例子一样。如果您有解决方案,请不要犹豫,分享它,我尝试了不同语法的looooot,我只能删除文件中的所有N哈哈:)

感谢您的时间!

1 个答案:

答案 0 :(得分:0)

试试这个sed 's/dbo//g' | sed 's/, N/, /g'

➜  ~ echo "INSERT [dbo].[TABLE_ONE] ([TABLE_ONE_ID], [TABLE_ONE_MNEMO], [TABLE_ONE_DESC], [AUTO_ANALYSIS], [SCOPE_LEVEL], [IN_ABV], [TABLE_ONE_ORDER], [REPORT_ETE]) VALUES (204, N'PERFO TEST', N'PERFO TEST', N'N', 1, 0, 999, N'70')" | sed 's/dbo//g' | sed 's/, N/, /g'