2017-09-14 62 views
0

我想根據時間戳讀取數據。檢查輸入文件的第一行,如果它與$ timestamp匹配,則刪除所獲取的最大時間戳以上的行。我使用了下面的命令,但在我編寫的用於刪除$ timestamp之前獲得的行的sed命令中引發錯誤。我錯在哪裏?如何在使用變量時省略使用sed讀取第一行?

timestamp=`(exec mysql db -u xxx -pxxx -s -N -e "select max(time) from table;")` 

sed -e '1/"$timestamp"/d' /home/xx/xx 
+0

你的描述不容易理解,你可以做/之後的例子,以便我們知道你真的想做什麼。 – Kent

+2

第一個直接明顯的問題是您使用單引號,因此shell變量不會被擴展。 –

回答

0

我猜你想要做的是,檢查輸入文件的第一行,如果它的$timestamp匹配,刪除行,如果它不匹配,請在文件上什麼都沒有。

你的sed代碼是錯誤的,請閱讀一些教程。這條線應該工作:

sed "1{/$timestamp/d}" /home/whatever 
+0

語法奏效,謝謝。但是我需要$ timestamp後面的行,但是這個命令給了我$行標記之前的行。 – Sneha

+0

不是文件中的第一行嗎?我不明白你的意思。再次粘貼輸入/輸出示例。 – Kent

+0

其實我正在發送日誌文件到基於時間戳的MySQL。因此,下次發送時,一次發送的文件需要省略。這是我的目標。 – Sneha