2014-09-02 78 views
0

我有一個文件,其中有一個特定的字符串,從不重複,我的所有數據都從這個字符串開始。我的要求是讀取此字符串下的所有數據(例如[string-start])並將讀取的數據重定向到另一個文件。如何從使用unix的特定字符串開始的文件讀取

+1

你能展示一個文件如何看起來的例子嗎? – Steve 2014-09-02 02:19:57

+0

如果你想在這裏找到幫助,你需要給出一個例子,說明你想要尋找什麼以及到目前爲止已經嘗試了什麼(在你的問題的正文中)。 – 2014-09-02 02:33:22

回答

0

在一行中用sed很容易實現。

sed -ne 'H;1h;${g;s/.*string-start//;p}' input.txt > output.txt 

這是分解。

  • -ne以安靜模式運行以下腳本。
  • h/H - 複製/追加模式空間以容納空間,H將追加\ n以首先保留空間。
  • H;1h - 僅用於複製所有文本以容納空間,1與第一行相匹配。
  • s/.../.../ - 用於替換string-start之前的文本爲空,表示將其刪除。
  • p - 打印當前模式空間。
  • ${...} - 匹配最後一行。

例如,input.txt如下。

abc 
def 
ghistring-startjkl 
mno 
pqr 

output.txt將如下。

jkl 
mno 
pqr 
0

@Krishna Kanth:這個命令可能會有幫助。試試看:

sed -e 's/^.*\(search-string\)/\1/' input-file > output-file 
0

@Landys:

我嘗試使用下面的命令,但發現解析錯誤一樣。

$ sed的-ne 'H; 1H; $ {克; S /.* \ START-OF-DATA //克,P}' < file.txt的> file.out

sed的:0602- 404函數H; 1h; $ {g; s /.* \ START-OF-DATA // g; p}不能被解析。

請推薦!!!

+0

只需找到它。似乎'@ Landys'在你自己的答案中不會通知我。請嘗試'sed -ne'H; 1h; $ {g; s /.* START-OF-DATA // g; p}'file.txt> file.out'。請注意,「START-OF-DATA」前沒有「\」。它用於在我的例子中轉義'['''',我會簡化它。 – Landys 2014-09-16 02:20:12

相關問題