2017-04-13 107 views
0

在很多論壇中處理命令「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' 

由:

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文件哈哈:)

謝謝你的時間!

+0

如果'sed的-i 'S/DBO // G' file'不會做任何事情,那麼這意味着dbo'沒有在任何地方出現的人物'文件。我們需要一個來自文件的真實行的完整示例。 –

+0

在我的文章的第一行(INSERT [dbo]。[TABLE_ONE] etc ...)在命令sed -i's/dbo // g'文件後,[dbo]仍然存在於文件中。任何改變,我不明白爲什麼。 @KevinMGranger – LaPalme

+0

我剛剛在我的機器上試過,並且ti工作得很好。你確定你在正確的文件上運行它,然後查看正確的文件嗎? –

回答

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' 
+1

你可以在sed中調用'sed's/dbo // g; s /,* N /,/ g'' – jm666

+0

謝謝各位,我試過你的解決方案,但是我不明白...它應該工作,並且[dbo]和「,N」仍然在這裏!我只是提醒說,我使用的文件來自Windows,我在Linux上,我應該嘗試一下dos2unix嗎?@ jm666 – LaPalme

+0

謝謝你的語法!該命令完美工作。我必須先做一個dos2unix,然後才能運行;)是@ jm666這就是我認爲的,但是在dos2unix命令運行之後,而不是之前。我在虛擬RHEL機器上從Windows導入了一個file.sql。這是我第一次這樣做,所以我不知道這是否真的是問題所在。 – LaPalme