天天看點

巧用vim+sed整理shell腳本檔案

在工作中遇到的問題,此nginx.sh配置腳本是我在Googel下載下傳下來的,實際複制貼貼到伺服器中運作時發現前面都有 001-100的行辨別符,外帶空格,影響運作和美觀啊;本來想一行行删除,後來不禁自己也鄙視自己:這也太沒技術含量了吧?具體解決方法如下:

①首先在 vim裡删除所有行首數字,如下所示:

1

<code>:%s/^[0-9][0-9]* </code><code>//</code>

②然後再删除所有行首空字元,如下所示:

<code>sed</code> <code>-i  </code><code>'s/^[[:space:]]*//'</code> <code>nginxd.sh</code>

整個nginxd.sh腳本如下,有興趣的朋友也拿着練下手。

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

<code>001     </code><code>#!/bin/sh</code>

<code>002   </code>

<code>003     </code><code># source function library</code>

<code>004     . </code><code>/etc/rc</code><code>.d</code><code>/init</code><code>.d</code><code>/functions</code>

<code>005   </code>

<code>006     </code><code># Source networking configuration.</code>

<code>007     . </code><code>/etc/sysconfig/network</code>

<code>008   </code>

<code>009     </code><code># Check that networking is up.</code>

<code>010     [ ${NETWORKING} = </code><code>"no"</code> <code>] &amp;&amp; </code><code>exit</code> <code>0</code>

<code>011   </code>

<code>012     RETVAL=0</code>

<code>013     prog=</code><code>"nginx"</code>

<code>014   </code>

<code>015     nginxDir=</code><code>/usr/local/nginx</code>

<code>016     nginxd=$nginxDir</code><code>/sbin/nginx</code>

<code>017     nginxConf=$nginxDir</code><code>/conf/nginx</code><code>.conf</code>

<code>018     nginxPid=$nginxDir</code><code>/nginx</code><code>.pid</code>

<code>019   </code>

<code>020     nginx_check()</code>

<code>021     {</code>

<code>022         </code><code>if</code> <code>[[ -e $nginxPid ]]; </code><code>then</code>

<code>023             </code><code>ps</code> <code>aux |</code><code>grep</code> <code>-</code><code>v</code> <code>grep</code> <code>|</code><code>grep</code> <code>-q nginx</code>

<code>024             </code><code>if</code> <code>(( $? == 0 )); </code><code>then</code>

<code>025                 </code><code>echo</code> <code>"$prog already running..."</code>

<code>026                 </code><code>exit</code> <code>1</code>

<code>027             </code><code>else</code>

<code>028                 </code><code>rm</code> <code>-rf $nginxPid &amp;&gt; </code><code>/dev/null</code>

<code>029             </code><code>fi</code>

<code>030         </code><code>fi</code>

<code>031     }</code>

<code>032   </code>

<code>033     start()</code>

<code>034     {</code>

<code>035         nginx_check</code>

<code>036         </code><code>if</code> <code>(( $? != 0 )); </code><code>then</code>

<code>037             </code><code>true</code>

<code>038         </code><code>else</code>

<code>039             </code><code>echo</code> <code>-n $</code><code>"Starting $prog:"</code>

<code>040             daemon $nginxd -c $nginxConf</code>

<code>041             RETVAL=$?</code>

<code>042             </code><code>echo</code>

<code>043             [ $RETVAL = 0 ] &amp;&amp; </code><code>touch</code> <code>/var/lock/subsys/nginx</code>

<code>044             </code><code>return</code> <code>$RETVAL</code>

<code>045         </code><code>fi</code>

<code>046     }</code>

<code>047   </code>

<code>048     stop()</code>

<code>049     {</code>

<code>050         </code><code>echo</code> <code>-n $</code><code>"Stopping $prog:"</code>

<code>051         killproc $nginxd</code>

<code>052         RETVAL=$?</code>

<code>053         </code><code>echo</code>

<code>054         [ $RETVAL = 0 ] &amp;&amp; </code><code>rm</code> <code>-f </code><code>/var/lock/subsys/nginx</code> <code>$nginxPid</code>

<code>055     }</code>

<code>056   </code>

<code>057     reload()</code>

<code>058     {</code>

<code>059         </code><code>echo</code> <code>-n $</code><code>"Reloading $prog:"</code>

<code>060         killproc $nginxd -HUP</code>

<code>061         RETVAL=$?</code>

<code>062         </code><code>echo</code>

<code>063     }</code>

<code>064   </code>

<code>065     monitor()</code>

<code>066     {</code>

<code>067         status $prog &amp;&gt; </code><code>/dev/null</code>

<code>068         </code><code>if</code> <code>(( $? == 0 )); </code><code>then</code>

<code>069             RETVAL=0</code>

<code>070         </code><code>else</code>

<code>071             RETVAL=7</code>

<code>072         </code><code>fi</code>

<code>073     }</code>

<code>074   </code>

<code>075     </code><code>case</code> <code>"$1"</code> <code>in</code>

<code>076             start)</code>

<code>077                     start</code>

<code>078                     ;;</code>

<code>079             stop)</code>

<code>080                     stop</code>

<code>081                     ;;</code>

<code>082             restart)</code>

<code>083                     stop</code>

<code>084                     start</code>

<code>085                     ;;</code>

<code>086             reload)</code>

<code>087                     reload</code>

<code>088                     ;;</code>

<code>089             status)</code>

<code>090                     status $prog</code>

<code>091                     RETVAL=$?</code>

<code>092                     ;;</code>

<code>093             monitor)</code>

<code>094                     monitor</code>

<code>095                     ;;</code>

<code>096             *)</code>

<code>097                     </code><code>echo</code> <code>$</code><code>"Usage: $0 {start|stop|restart|reload|status|monitor}"</code>

<code>098                     RETVAL=1</code>

<code>099     </code><code>esac</code>

<code>100     </code><code>exit</code> <code>$RETVAL</code>

另注:如果單純隻用sed來執行的話就比較簡單了,如下所示的一句指令就可以搞定需求了:

<code>sed</code> <code>-i -e </code><code>'s@^[0-9][0-9]*@@ '</code> <code>-e </code><code>'s@^[[:space:]]* @@'</code> <code>nginx.sh</code>

本文轉自 撫琴煮酒 51CTO部落格,原文連結:http://blog.51cto.com/yuhongchun/504993,如需轉載請自行聯系原作者

繼續閱讀