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/cn.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灯, 水草

请输入看板名称,例如:BabyMother站内搜寻

TOP