碰到这货10年了,见到这俩,仍然感到十分恶心,不愿去学,
想问下大神,这俩还有必要学么:)
1
Sunyanzi 2015-01-10 16:24:04 +08:00
如果不学这两个 ... 你要用什么来替代这两个的功能呢 ...
|
2
Draplater 2015-01-10 16:31:46 +08:00
这两个东西很有用
|
3
unasm 2015-01-10 16:31:58 +08:00
我工作中经常用到grep,从这个角度来说有一定学习的必要,但是没有必要太深入,够用就好
|
5
Havee 2015-01-10 16:32:40 +08:00
楼主没有这方面的需求吧,那当然没必要学
|
6
likuku 2015-01-10 16:33:50 +08:00
awk 很好用啊...最简单的使用分隔符进行分列这个至少学下吧...
|
7
0zero0 2015-01-10 16:35:37 +08:00
遵循80/20法则,熟练掌握常用的几个sed/awk命令用不了多长时间,但可以起到很大的效果;
用Perl、Python当然可以实现sed/awk的功能,不过这需要更多的键盘敲击量…… |
8
otmb OP awk跑不了:(
E:\>echo a b c | awk '{print $2}' awk: '{print awk: ^ invalid char ''' in expression 赶脚没错啊... |
10
gangsta 2015-01-10 16:43:57 +08:00 via iPhone
楼主没看过编程珠玑?
|
11
alansalexer 2015-01-10 16:44:39 +08:00
经常处理些字符串/文件,很方便,尤其一些小任务。
至于用python/perl也可以,比如python有一个https://github.com/Russell91/pythonpy ,让你可以直接在终端的同一行内执行python任务。 |
14
besto 2015-01-10 17:09:07 +08:00
提两个场景。
1,debian中直接remove包会产生状态为rc的包(配置文件还在)如果去除系统里所有rc包? 2,一个巨大的项目,现在需要把很多文件中字符串AAA替换成BBB如果做? |
16
alexapollo 2015-01-10 17:16:55 +08:00
@besto 后者<c-h>是大部分IDE支持的功能。。。
|
17
9hills 2015-01-10 17:16:56 +08:00 via iPhone
简单的说,就是爱用用……
用Python也可以,自己选择呗。 |
18
rrfeng 2015-01-10 17:18:06 +08:00
存在即合理
|
19
besto 2015-01-10 17:19:12 +08:00
@alexapollo 真的不知道c-h是啥功能。
|
20
yakczh 2015-01-10 17:49:04 +08:00
学python就够了, perl都不用学了
|
21
KDr2 2015-01-10 17:49:09 +08:00
perl one-liner rules them all.
|
22
hanai 2015-01-10 17:58:54 +08:00
运维需要哦~
|
24
zhicheng 2015-01-10 18:12:01 +08:00
现在都是自动化运维,各种云计算的流行也让单机承载的业务越来越少,这两个东西用到的机会会越来越小。
|
25
Zhongwei 2015-01-10 18:14:20 +08:00
晚上睡前抽出 1 小时看一下
The AWK Programming Language http://book.douban.com/subject/1876898/ 你会发现,这一小时在未来会节省你百倍的时间 |
28
ivvei 2015-01-10 18:22:22 +08:00
没必要学了。有的是可以代替的。
|
29
BGLL 2015-01-10 18:25:22 +08:00
awk 还是很好的嘛,有人说“又臭又长”,但有人觉得一行流就是方便
|
30
walkman660 2015-01-10 18:34:38 +08:00
|
31
expexp 2015-01-10 18:35:05 +08:00
sed 真心是天天必备。
|
32
luoweihua7sync 2015-01-10 18:37:42 +08:00
你能理解做前端开发的都要用这2货查日志么。。。
|
33
KentY 2015-01-10 18:57:01 +08:00 via Android
请定义丑陋与美好。
你觉得美好的东西,学了多深 |
34
Sunyanzi 2015-01-10 19:16:43 +08:00 1
|
35
jecvay 2015-01-10 19:17:15 +08:00
需要的! Python能实现但是也没这写起来这么快一句话搞定的.
|
36
zxdy 2015-01-10 19:26:11 +08:00
前两天有个日志解析脚本的优化,本来需要跑30多个小时,用了awk和sed之后,只花了2分半钟,楼主觉得有必要学吗
|
37
nicai000 2015-01-10 19:29:52 +08:00
AWK怎么丑啦!!!!!!!!!!!
|
39
vinceguo 2015-01-10 19:36:23 +08:00 1
谷歌sed tutorial第一条的网站里关于sed和awk的教程都很不错
http://www.grymoire.com/Unix/Sed.html |
40
msg7086 2015-01-10 19:48:55 +08:00
基本上你用高级语言来实现的话,就是在重新发明这几个工具而已。
当然有时候用高级语言看起来更清晰点。 但是有人觉得one liner更舒服更方便。 |
41
est 2015-01-10 19:52:20 +08:00
|
43
uuspider 2015-01-10 20:09:00 +08:00
这两个东西,对着文档练练手,也用不了多长时间吧。
码农还怕丑陋?还怕“又臭又长”? |
44
lululau 2015-01-10 20:10:41 +08:00
Perl 基本可以替代 sed 和 awk 的功能,而且不用记 sed 和 awk 里面那些不一样的正则语法,但是缺点也十分明显,sed 和 awk 分别都只有 3 个字母,而 perl 是 4 个字母,效率立马下降 33%
个人觉得对于简单到需要不到 20 个字符的 sed 或 awk 命令就能完成的任务来说,使用 sed 或 awk,对于更复杂的任务或者你记不清某个 meta-character 在 sed 或 awk 中是该转义还是不转义的时候就用 Perl |
46
KentY 2015-01-10 20:23:27 +08:00 via Android
@lululau 如果不清楚正则,不知道什么时候该转意,什么时候不用,那和awk,sed没关系,是对正则知识的欠缺,不补早晚有天会暴露。而且对它不了解,使用上也得不到精妙。
BTW,你说的那些不同的语法,其实是bre,ere,pcre的区别 |
47
lululau 2015-01-10 20:40:32 +08:00
@KentY 博学!
找了几个简单的 sed/awk one liner,翻译成对应的 perl 命令,熟悉 sed/awk 而对 Perl 不了解的同学可以感受下: 1. gsed '/^$/d;G' filename perl -ne 'print unless /^$/' filename 2. gsed 's/reg/replace/flags' filename perl -pe 's/reg/replace/flags' filename 3. gsed '1!G;h;$!d' filename perl -e 'print reverse <>' filename 4. gsed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//' perl -pe '$_=reverse' 5. gawk '{print NR":"NF}' input.txt perl -alne 'print $., ":", @F+0' input.txt 6. gawk '{print $NF}' input.txt perl -alne 'print $F[-1]' 7. gawk 'NF > 2' input.txt perl -alne 'print if @F > 2' 8. gsed -n 100,200p filename perl -ne 'print if 100..200' filename |
48
treo 2015-01-10 20:59:34 +08:00
如果都10年了还没学,说明你没必要学,学了也记不住,这俩东西学习曲线太陡,一个月不碰就得重新翻man。现在还学这个的也就剩下运维和*nix狂热爱好者了吧
|
49
zxdy 2015-01-10 21:12:12 +08:00
@otmb 用了grep+sed,后来用截取字符串的办法处理每行,效率有了大概9倍的提升,但是经过测试发现实现的效率会随着日志变大而越来越低,可能是shell对大文件读取写入的IO有瓶颈,于是最后用了awk+sed,效果比较明显
|
50
kotokz 2015-01-10 21:18:49 +08:00
sed效率很一般,直接用perl吧
|
51
Tinet 2015-01-10 21:33:10 +08:00
居然说这两东西丑,在没有深入学习之前请不要这样说
|
52
faywong8888 2015-01-10 21:39:25 +08:00
开房数据盛传之时下载了数据库文件,看了一天sqlserver怎么导入最终搞不定。之后在cygwin下awk一下就搞定了。
|
53
Bruta 2015-01-10 22:03:40 +08:00 via iPhone
这两个都是神器啊…
|
54
anguskwan 2015-01-10 22:15:49 +08:00
还有比这更性感的么。。。
|
55
FatGhosta 2015-01-10 22:18:55 +08:00
我怎么觉得awk和sed是两个神器呢。。。
|
56
Tink 2015-01-10 22:18:57 +08:00
我只会sed,但是我知道这俩货太有用了
|
57
love 2015-01-10 22:33:10 +08:00
虽然写过很多bash脚本,但这二货只会用一点点,也不想去学了。现在写复杂的脚本直接上python了,又易调试又好写。
|
58
reverland 2015-01-10 22:38:39 +08:00
有些地方……没有python啊。
编译个python比编译个awk,sed费事些 |
59
semicircle21 2015-01-10 23:11:57 +08:00
perl python 什么的都能替代, 仅在不能使用这些语言的时候有用, 我能想到两种情况:
1. 嵌入式: 空间紧张. 2. 面向很多机器的场景, 每个 image 少个 python, 整体就能省下很多了. 这种东西实在没必要勉强学, 用到的时候就学, 用过了就自然忘~ |
60
YORYOR 2015-01-10 23:39:25 +08:00
没想好怎么喷楼主,只跟windows打交道吧
|
61
jarlyyn 2015-01-11 01:14:41 +08:00
sed重度粉丝路过。
没有sed基本都不知道该怎么写shell脚本了。 |
62
siteshen 2015-01-11 02:00:03 +08:00
|
63
xiaowangge 2015-01-11 02:58:55 +08:00 via Android
日志解析利器。
|
64
ysmood 2015-01-11 03:37:26 +08:00
@binux 菊苣竟然不知道 python 的 -c 选项吗? 比如打印 “0”:python -c 'print 0' 。即使不用 -c 选项,用 pipe 也是可以的,如 echo 'print 0' | python。这种用法非常标准,ruby,lua,node 之类的现在解释器都支持。
|
65
GeekGao 2015-01-11 04:23:20 +08:00
没必要,你觉得没有必要就真的没有必要。就像有的人认为英文对于他们自己也是没必要的那样。
|
69
bugeye 2015-01-11 07:44:31 +08:00
又想到一個沒有perl的發行版,android.
|
74
orzfly 2015-01-11 09:18:38 +08:00
cmd 是不支持单引号字符串的,如果你非要用 cmd 来调用 awk,请记得用双引号。以及 cmd 的转义字符是 ^ 不是 \,这个也请记住免得等会双引号里想用双引号……
或者你可以在 cmd 里先打开 bash 再说…… |
75
nowcoder 2015-01-11 09:58:35 +08:00
越丑越贤惠
|
77
9hills 2015-01-11 11:20:02 +08:00 via iPhone
|
78
9hills 2015-01-11 11:23:39 +08:00 via iPhone
@binux -c 中for循环一般用list comprehension替代,当然大多数情况下会变得很丑。。
|
79
ysmood 2015-01-11 11:42:03 +08:00
@binux 写了另一个主题讨论这个问题,http://v2ex.com/t/161060,不知道会不会有用。比如 haskell 语言是没有 for 循环的,很多情况下我代码里不用 for 循环也能用函数式编程的方法解决大部分问题。ruby 和 python 已经很函数式了。map reduce 就能搞定很多常规问题了。
|
81
Xbluer 2015-01-11 13:12:36 +08:00
生产系统是IBM的AIX。不让装Python、Ruby,不用这俩货没得用啊。
|
82
Narcissu5 2015-01-11 13:27:49 +08:00
话说每次有人跟我说“Posix命名比windows科学”的时候,我就想吐槽:你知道awk代表什么么?
|
84
Xbluer 2015-01-11 20:46:29 +08:00
@otmb Bank系统,不让随便装这类开源软件。领导们认为这玩意不安全,你信么。其实吧,就是没有大公司背书,怕出了问题担责任。
|
85
leafonsword 2015-01-13 18:12:43 +08:00
|
86
raawaa 2017-07-15 19:19:18 +08:00
非常有用。
我自己用 javascript 写了一个抓 AV 磁力链接的脚本。抓回来的链接都按番号存在子文件夹里。用 awk 批量处理之后直接喂给 transmission 去下载,节约了我不少生命。现在除了硬盘越来越吃紧之外,我觉得十分满足。Linux 真好。💖 |