Linux 板


LINE

※ 引述《Gold740716 (项为之强)》之铭言: : 其实不一定要全部挤在同一行。 : 看你好像对 sed 还有爱,可以看看 sed 的语法。 : 我会把不同的 pattern 写成不同行,会比较好读, : 也不用想要怎麽把一堆 pattern 挤在同一个 regexp 里。 : 反正只会有一行能成功匹配执行,其它会因为不匹配就放掉了。 : 另外你的 (idempotent) ,是保留 protocol 而已吗? : 还是希望连 querystring 其它参数也保留? 是为了避免上 ptt 被骂没缩网址, 所以那些都一并去掉 给时间用手加就好 这应该符合大多数人的需求 :) 喔对,我借用 idempotent 来表示 缩过的, 再缩一次必须得到同样答案 像 include file 不必担心有没 include 过 因为有 #ifndef ... #define ... #endif 但是我那 one-liner, 现在还不能证明是 A^2=A 虽然目前的行为***似乎是**... 展像你这样展开来的话 要是碰到有甚麽要增加 真的容易多了 : 要的话可能要多写几个 pattern 去抓。 : ```sh : youtu() { : local vid (... snip snip ...) ------------------------------- #!/bin/sh # # 1. 把两个函数放一起, 用 -2 叫 Gold740716 的 youtu2() # 2. 我先把 youtu2() 的 local 遮起来, 改 _vid_ 避撞 (posix?) # 3. 假设 FreeBSD 原生 sed 还是会 match \n, 谁帮试试看? # 4. idempotent 代数是 A^2 = A 的意思 (缩过的网址再缩一次) # 5. 有个 stderr 我不晓得哪来的... 能不能帮忙找一下, tail? # # $ xsel | youtu -2 # tail: cannot open '' for reading: No such file or directory # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ # http://youtu.be/11111111111 这行??? 哪来的 tail????
# http://youtu.be/22222222222
# http://youtu.be/33333333333
# http://youtu.be/44444444444
# http://youtu.be/55555555555
# http://youtu.be/66666666666
# http://youtu.be/77777777777
# http://youtu.be/88888888888
# http://youtu.be/99999999999
# http://youtu.be/aaaaaaaaaaa
# http://youtu.be/bbbbbbbbbbb
# http://youtu.be/ccccccccccc
# http://youtu.be/ddddddddddd
# # http://youtu.be/idempotence
# # 6. 1604981049 问题 5 已解决, 请搜寻左边 time_t # 那是因为 '\n' 被写为 back stocks `\n`(键盘左上) # # 为方便测试, 可以整块反白起来, 丢给它 # (把这整个档案自己丢给它自己也很有意思...) # https://www.youtube.com/v/11111111111 # https://www.youtube.com/watch?v=22222222222
# https://www.youtube.com/embed/33333333333?rel=0 # https://www.youtube.com/watch?argv=xyz&v=44444444444
# https://www.youtube.com/watch?v=55555555555&list=PLDB852818BF378DAC
# https://www.youtube.com/watch?v=66666666666&feature=related
# https://www.youtube.com/watch?argv=xyz&v=77777777777
# https://www.youtube.com/watch?v=88888888888&feature=feedrec_grec_index
# https://www.youtube.com/user/IngridMichaelsonVEVO#p/a/u/1/99999999999 # https://www.youtube.com/v/aaaaaaaaaaa?fs=1&hl=en_US&rel=0 # https://www.youtube.com/watch?v=bbbbbbbbbbb#t=0m10s
# https://www.youtube.com/embed/ccccccccccc?rel=0 # https://www.youtube.com/watch?v=ddddddddddd
# http://youtu.be/idempotence
youtu() # lantw44 Gold740716 { sed 's|.*\(https*\):.*[/vd]\{0,1\}[0-9vd][/=]\([0-9a-zA-Z_-]\{11\}\).*$|\1://youtu.be/\2|' | awk 1 # lantw44: FreeBSD \n issue # sed 's|^\(http[s]\{0,1\}\):.*[/vd]\{0,1\}[0-9vd][/=]\([0-9a-zA-Z_-]\{11\}\).*$|\1://youtu.be/\2\ #|' | tr -s '\n' } youtu2() # provided by Gold740716 { # local vid # 怕有些 shells 还没做 scope 先变态避免相撞 # 我以前没用过底线, 请住帮看看有无问题? portable? # 还没去查 POSIX 怎麽讲... _vid_='\([0-9a-zA-Z_-]\{11\}\)' sed " # 新增确保 idempotence (i.e. youtu | youtu = youtu) /https*:\/\/youtu.be\/$_vid_/q # hold protocol to hold space h s|.*\(https*://\).*|\1| s|\$|youtu.be/| x # only one of them should match s|.*/v/$_vid_\$|\1| s|.*/v/$_vid_?.*|\1| s|.*/watch?v=$_vid_.*|\1| s|.*/watch?.*&v=$_vid_.*|\1| s|.*/user/.*/[0-9]*/$_vid_\$|\1| s|.*/user/.*/[0-9]*/$_vid_?.*|\1| s|.*embed/$_vid_\$|\1| s|.*embed/$_vid_?.*\$|\1| # append replace result to hold space # then move all to pattern space H g # there should be a \n after Hold, so remove it, # but someone point that freebsd sed does not support '\n' # 1604981049 上一行的 '\n' 本来是 back sticks , 已改为 ''. # 引起 sed 里真正的 command substitution! #s/\n// " | tr -d '\r\n' echo # 1604799836 抱歉没改回来, 这里回复 Gold740716 原本的码 } YOUTU="youtu" [ "$1" = "-2" ] && YOUTU="youtu2" && shift if [ -t 0 ] # priority: stdin > "$1" > X-clipboard then if [ "$1" ] then echo "$1" | $YOUTU else # priority: termux > Mac > X11 XGET="xsel" uname | grep -q "Darwin" && XGET="pbpaste" # rickieyang echo "$HOME" | grep -q "termux" && XGET="termux-clipboard-get" $XGET | $YOUTU fi else $YOUTU ; fi --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 59.115.149.134 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Linux/M.1604742042.A.F79.html
1F:→ cuello: 天哪,手机版真的太自动了 11/07 17:50
2F:→ cuello: 不晓得 ptt 有没有像 verbatim 这种东西? 11/07 17:50
3F:推 Gold740716: awk 1 是什麽? 11/07 19:49
4F:→ cuello: 是 awk 用的真假值, 写为 1==1 应该比较不容易误导 11/07 22:20
5F:→ cuello: 因为很多人头痛如何确保尾巴有个 \n 就有人想出这办法 11/07 22:22
6F:→ cuello: 网路上有人在酷酷嫂, \n 又不容易搞定, 就有人出怪招 11/07 22:24
7F:→ cuello: 然後我也还不确定 mawk/gawk/.. 这行为是否每个平台都一致 11/07 22:26
8F:→ cuello: 就等着看有没有人用出问题... 11/07 22:26
9F:→ cuello: 动这念头是因为用滑鼠常没割到 \n, paste 出来看不清楚 11/07 22:28
10F:→ Gold740716: 就 tr -d '\n' ,之後再手动 echo 补上一个就好啦 11/07 23:39
11F:→ Gold740716: 如果怕出问题 11/07 23:39
12F:→ cuello: 好,我等一下来看看 11/08 09:29
※ 编辑: cuello (59.115.149.134 台湾), 11/08/2020 10:02:08
13F:→ cuello: 那一行 tail: cannot open '' for reading: No such file 11/08 10:26
14F:→ cuello: 好像发生在定义 _vid_ 前後, 我印象中一直都有 11/08 10:27
15F:→ cuello: 难到是我的电脑? 还有, 在我手机上是: 11/08 10:28
16F:→ cuello: "youtu: 1: n: not found" 11/08 10:28
17F:→ Gold740716: 不然你就 set -x 再 xsel | youtu -2 ,用 debug 模式 11/08 15:09
18F:推 holishing: 推 set -x 11/08 22:07
19F:推 ucrxzero: set -e 也不错 11/08 23:30
1604981049 多谢! 其实我用 sh -x 看过, 只是没耐心好好看。 因为怎麽也没想到 sed 的 comment lines 里面出现的 `\n` back sticks 会被当做 command substitution 真的去执行! 就算换成 $(), 它也执行, 而且 sed 被 blocked 住直到 n 了事! 所以看到的是 n 的 stderr, stdout 并未影响 pattern space. (啊对, 可搜以搜寻以上 time_t 找到这次编辑的地方) 好, 那现在另一个问题: 这是 sed(1) 的 feature 还是 bug? 我笔电是 sed (GNU sed) 4.7 手机是 sed (GNU sed) 4.8 两个版本都是一样的行为: 在 comment lines 里做 command substitution! 嘿, 我从来都没听过这种事! sh, dash, posh, ksh, ash, bash 都可以随兴 comment 喔 但 GNU sed 不行! 这是在.... hallo--- 还没解释 n: 我的 PATH 里有很多荒废不用暂时性的测试程式 它们多用很短的名字. /tmp/ 里也一堆... 久了就忘了! 警惕... ※ 编辑: cuello (59.115.193.4 台湾), 11/10/2020 12:43:37
20F:推 Gold740716: 因为在双引号里 shell 会替换 `` $() ,单引号就不会 11/11 13:39







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

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

TOP