Linux 板


LINE

食飽未, 如題, 我想用 ed(1) 碰到問題 ------------------------------- #!/bin/sh # -- append-text-to-the-last-non-blank-line --- text=" 寫在最後一個非空白行尾巴" ed -s "$1" [小於 小於] EOF >/dev/null ?.?s/$/$text/ wq EOF --------------------------------- 倒也順利, 只不過不曉得除了 -s 之外 還有沒有個 --really-quiet? 一定要用 >/dev/null 嗎? 其實這還不是重點 上面的程式碰到尾巴沒有空白行的檔案就錯了! 因為, 好像 ?.? 會從最後第二行找起 結果就錯過了最後一行... 這裡有沒有真的用過 ed(1) 的人啊? PS. 剛剛連續幾次要打 here-document 的 小於 弄亂的 ptt 的 editor, 也不知怎麼回事.,,, --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.36.62.143 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Linux/M.1666614705.A.A7A.html
1F:推 yvb: ed -s cuello.txt << EOF >/dev/null 2>&1 10/24 21:34
2F:→ yvb: 1 10/24 21:34
3F:→ yvb: ?.?s/$/$text/ 10/24 21:34
4F:→ yvb: wq 10/24 21:35
5F:→ yvb: EOF 10/24 21:35
6F:→ yvb: 試過修改 cuello.txt 看起來 OK. :P 10/24 21:37
哈哈哈... 我都合不嚨嘴巴了, 真的耶! ed(1) 還會繞回去喔~~~ ho ho ho ho ho ho 唉, 怎麼辦? 也不知道怎麼謝啦... ※ 編輯: cuello (114.36.62.143 臺灣), 10/24/2022 21:41:52 ※ 編輯: cuello (114.36.62.143 臺灣), 10/24/2022 22:19:05
7F:推 cckuan2718: ed(1)讀取玩檔案會把行號設成最後一行... 很怪的設 10/25 15:03
8F:→ cckuan2718: 計 10/25 15:03
9F:→ cuello: 純亂想, 啊我檔案讀完指標就是指在這裡啊~ :) 10/25 21:32
※ 編輯: cuello (114.36.70.90 臺灣), 10/26/2022 20:55:04
10F:推 yvb: 這樣想也沒錯啊. 查看 ed 的 man page, LINE ADDRESSING 的 10/26 20:46
11F:→ yvb: 第一段的最後兩句, 想像 ed file 就是進 ed 後再做 r file , 10/26 20:48
12F:→ yvb: 再去查看 r file 就是如此. 10/26 20:50
是說, Debian 為甚麼決定預設不裝 ed(1)? 是煩惱會把硬碟塞暴? 還是基於甚麼微妙的, 長遠的考量要省下這個 package? 所以, 我還要考量人家有沒有 "Standard Editor" 可用... 沒有的話, 有沒有權限安裝? 這些盤算自然要衍生一個問題, 以上這件事情, 不用 ed(1) 的話, 大家都是怎麼做的? 這種任務應該常碰到吧... 用 ed(1) 之前, 我自己自然也做過, 可是, 就不拿出來見笑了好嗎? 因為連我自己都看不下去.... P.S. 還有, 好像 dc(1) 也很容易塞暴硬碟, 所以 Debian 就暫時不安裝了嗎... ※ 編輯: cuello (114.36.70.90 臺灣), 10/26/2022 20:58:18
13F:推 yvb: ed 和 dc 都是很久遠的工具了吧. 使用 ex(vim) 和 bc 不好嗎? 10/26 21:12
14F:→ yvb: 至於在最後一行說是怪設計... 久遠的工具當然有其歷史背景. 10/26 21:19
15F:→ cuello: 啊~~ ex(1) 我還沒試過說... 10/26 21:32
16F:推 cckuan2718: 之前看完Ed Mastery這本書之後試過用ed(1)裝arch L 10/26 22:11
17F:→ cckuan2718: inux 10/26 22:11
18F:→ cckuan2718: 最後雖然一切正常 但我的心得.. 用cat加上heredoc 10/26 22:12
19F:→ cckuan2718: 或是直接用sed 10/26 22:12
20F:→ cckuan2718: 搞不好還比較快 10/26 22:12
經 yvb 提醒, 剛剛才發現, 上面那個程式, 可以把 "ed" 直接改為 "ex" 結果一樣! 起碼就這件事情而言, ex(1) 跟 ed(1) "相容" 現在好奇, ex(1) 也有意要取代 ed(1) 嗎? 不是, 用 sed 做這件事, 我就不會啊~~ 起碼不是那麼直接、乾翠... ※ 編輯: cuello (114.36.69.3 臺灣), 10/26/2022 22:47:57
21F:→ leolarrel: 當初你也不會ed/ex, 所以你也只是"現在"不會sed 10/27 10:06
※ 編輯: cuello (114.36.69.3 臺灣), 10/27/2022 20:22:30
22F:推 yvb: 與其說幹話, 樓上要不要提供原PO這個問題使用 sed 的做法? 10/27 20:06
23F:→ yvb: 這問題我覺得使用 ed/ex 似乎簡單許多. 10/27 20:10
24F:→ yvb: ed ex 的故事請自行參考 wikipedia. 10/27 20:19
※ 編輯: cuello (114.36.69.3 臺灣), 10/27/2022 20:24:08 哈哈, 每次編輯文章的時候, 都跟 yvb 剛好 "相出路" 我再次把剛寫的部份移到最後面: 你可能誤會了... 我的意思是: e.g. sed(1) et al. for THIS VERY TASK How, would you do that? A     sed -i .... ? 不要再建個新檔, 再覆寫掉正本. 我的感覺是, sed 像是在錄音室編輯磁帶 你每一個時候只看到錄音帶的一個窗子 錄音頭位置跟它週遭 這一類的媒體, 必要時, 有可能涉及 "2nd pass" editing 這是 sequential access media 的本質 不同於 random access media ed, ex 雖然不見得一次載入所有 data 但它在本質上是 random access, 適合執行像是     1,3m$ 這種工作 為了避免太被自己的盲點屏蔽, 我才問大家說 sed(1) awk(1) 真得也可以做得直接了當嗎? 這一定會是很值得學習的啊 ~~~ ※ 編輯: cuello (114.36.69.3 臺灣), 10/27/2022 20:29:03
25F:推 yvb: sed -i 或許可以, 但應該會用 b x h 等我覺得很不直覺的操作. 10/27 20:33
我只試到印出最後一個非空白行就卡住了:      sed -n -e '/^$/ !h' -e '$ {x;p;}' ※ 編輯: cuello (114.36.69.3 臺灣), 10/27/2022 20:43:48
26F:→ leolarrel: 會是幹話嘛? 好拉你說是就是,反正這是世界是你最大 10/28 14:55
27F:推 yvb: 套句大師兄的話, 不要誤會, 我不是針對你... :P 11/07 22:09
28F:→ yvb: 包含我自已,說些好像有理其實沒啥幫助或不相干的話,都是幹話. 11/07 22:11
29F:→ yvb: 回正題, 這問題用 sed 好像找到的解法, 多半是搭配 tac, 不然 11/07 22:18
30F:→ yvb: 就是特定 pattern 而不是非空白行... 11/07 22:20
31F:→ yvb: 所以我做個變換, 先將非空白行換成特定 pattern 結尾, 最後 11/07 22:21
32F:→ yvb: 再換回去... 因此寫法如下: sed -i \ 11/07 22:21
33F:→ yvb: 's/.$/&=/;1h;1!H;$!d;x;s/\(.*\)=/\1'"$text"'/;s/=\n/\n/g' 11/07 22:23
34F:→ yvb: 不確定是否可以完全正常運作就是了. 11/07 22:24
目前為止, flawless! 好像沒太多人對這個問題感興趣 大概是沒時間去想暫時跟自己無關的事情 但是,一旦碰到了,會各自上網查尋,然後, 會在 ptt Linux 這篇找到最 satisfying 的解答 (I suppose) 就是以上 yvb 所提的 ed(1) 跟 sed(1) 的解 這就是我們常講的所謂 contribution, 不是嗎 等 yvb 有空, 有力氣時, 能不能請解釋一下你的 設計, 構想, 以及 implementation 因為, 我覺得這是個值得參考的範例 1. 一個一行字就講得清楚的問題, 以及 2. 一個經過構思, 實現, 實用的解答 其實, 我會碰到問題, 除了「明顯」的需求之外 也是因為我自己常常在下載的圖檔的尾巴 偷偷 append 這的檔案的來源 然後用 tail -1 因為還沒看過有 image viewer 會跟人計較這些多餘的 "data"... 以上的 sed -i 指令只有在碰到 binary file 會失敗 ※ 編輯: cuello (219.68.108.132 臺灣), 11/22/2022 22:26:54







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Gossiping站內搜尋

TOP