linux基礎學習-第八天

2016-08-08

授課內容:

處理文本的工具sed

vim編輯器

Shell腳本編程基礎介紹

sed:sed是一種流編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space),

    接著用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。默認不編輯原文件,僅對模式空間的文件副本進行處理

sed [option] ‘addresscommand‘ file….

-n:靜默模式(不輸出模式空間內容的自動打印)

-r:支持擴展正則表達式

-i:原文編輯

-e:多點編輯

‘addresscommand‘:

address:

#:第幾行

n,m:第n到第m行

n,$:第n行到最后一行

/pattern/:被此處模式所能夠匹配到的每一行(正則表達式)

command:

d:刪除 

p:打印顯示

a \text:在行后面追加文本;支持使用\n實現多行追加

i \text:在行前面追加文本,同樣支持使用\n實現多行追加 

s///:查找替換,支持使用其它分隔符,s@@@,s###

替換標記:

g: 行內全局替換

p: 顯示替換成功的行

w /PATH/TO/SOMEFILE:將替換成功的行保存至文件中

vim編輯器:

visual edit improved

vim [OPTION]… FILE…

+:打開文件時定位在最尾一行

+#:打開文件時定位在第#行內

+/PATTERN:打開文件后,直接讓光標處于第一個被PATTERN匹配到的行的行首

–d file1 file2… 比較多個文件

vim編輯多個文件

vim FILE1 FILE2 FILE3

:next 切換至下一個文件

:prev 切換至前一個文件

:last 切換至最后一個文件

:first 切換至第一個文件

vim的模式:

命令模式(command mode):打開文件時的默認模式

編輯模式(edit mode):輸入i,I,a,A,o,O時進入的文本編輯模式

擴展命令模式(extended command mode):輸入:時的模式

命令模式–>編輯模式:

I:在當前光標所在的行首輸入

i:在當前光標所在處輸入

A:在光標所在行的行尾處

a:在光標后面處輸入

O:在光標的上一行開始處

o: 在光標的下一行開始處

插入模式—-> 命令模式

ESC

?命令模式—-> 擴展模式

:

?擴展模式—-> 命令模式

ESC

關閉文件:

擴展命令模式下

:q  沒有更改文件時退出

:wq 保存退出

:q! 強制不保存退出

:wq! 強制保存退出

命令模式:

ZZ:保存退出

ZQ:不保存退出

命令模式下的光標跳轉:

  字符間跳轉:

h: 左l: 右j: 下k: 上

#COMMAND:跳轉由#指定的個數的字符;

  單詞間跳轉:

w:下一個單詞的詞首

e:當前或下一單詞的詞尾

b:當前或前一個單詞的詞首

#COMMAND:由#指定一次跳轉的單詞數

  當前頁跳轉:

H:頁首M:頁中間行L:頁底

  行首行尾跳轉:

^: 跳轉至行首的第一個非空白字符;

0: 跳轉至行首

$: 跳轉至行尾

  行間移動:

#G、擴展模式:# :跳轉至由#指定行

G:最后一行

1G, gg: 第一行

  句間移動:

):下一句(:上一句

?段落間移動:

}:下一段{:上一段

命令模式操作

  字符編輯:

x: 刪除光標處的字符;

#x: 刪除光標處起始的#個字符

xp: 交換光標所在處的字符及其后面字符的位置

~:轉換大小寫

  刪除命令:

d: 刪除命令,可結合光標跳轉字符,實現范圍刪除;

dd:刪除整行

#dd:shanchu#行 

d$: 刪除到行尾

d^:刪除到非空行首

d0:刪除到行首

  復制命令(y, yank):

y: 復制,行為相似于d命令

yy:復制整行

y$

y0

y^

  粘貼命令(p, paste):

p:緩沖區存的如果為整行,則粘貼當前光標所在行的下方;否則,則粘貼至當前光標所在處的后面

P:緩沖區存的如果為整行,則粘貼當前光標所在行的上方;否則,則粘貼至當前光標所在處的前面

擴展模式:查找

/PATTERN:從當前光標所在處向文件尾部查找

?PATTERN:從當前光標所在處向文件首部查找

n:與命令同方向

N:與命令反方向

s: 在擴展模式下完成查找替換操作

格式:s/要查找的內容/替換為的內容/修飾符

地址定界:

#: 具體第#行,例如2表示第2行;

#,#: 從左側#表示行起始,到右側#表示行結尾

#,+#: 從左側#表示的行起始,加上右側#表示的行數

:2,+3 表示2到5行

.: 當前行

$: 最后一行

.,$-1 當前行到倒數第二行

%:全文, 相當于1,$

命令模式:撤消更改

u撤銷最近的更改

. 重復前一個操作

使用多個窗口瀏覽

  多文件:

vim -o|-O FILE1 FILE2 …

-o: 水平分割

-O: 垂直分割

在窗口間切換:Ctrl+w, Arrow

  單文件:

Ctrl+w,s: split, 水平分割

Ctrl+w,v: vertical, 垂直分割

ctrl+w,q:取消相鄰窗口

ctrl+w,o:取消全部窗口

:wqall退出

shell腳本基礎:

shell腳本是包含一些命令或聲明,并符合一定格式的文本文件

?格式要求:首行shebang機制

#!/bin/bash

創建shell腳本的規范:

shell腳本的開頭最好寫上作者、日期、描述等基本信息,一方面可以方便別人閱讀,另一方面也方便自己回顧

#!/bin/bash
#author: 
#Version: 1.0
#Description:This script displays some information about your environment

創建腳本步驟:

第一步:使用文本編輯器來創建文本文件

?第一行必須包括shell聲明序列:#!

#!/bin/bash

?添加注釋

注釋以#開頭

?第二步:運行腳本

?給予執行權限,在命令行上指定腳本的絕對或相對路徑

?直接運行解釋器,將腳本作為解釋器程序的參數運行

#!/bin/bash
#created by:
#date:2016-08-09
#ver:1.0
#DES:test script
echo `date`
echo `cal 08 2016`

[root@Centos7 ~]# sh first.sh 
Tue Aug 9 09:03:38 CST 2016
August 2016 Su Mo Tu We Th Fr Sa 1 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

原創文章,作者:麥德良,如若轉載,請注明出處:http://www.www58058.com/31997

(0)
麥德良麥德良
上一篇 2016-08-10 13:58
下一篇 2016-08-10 13:59

相關推薦

  • bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容

    bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容 bash的基礎特性:命令的執行狀態結果 bash通過狀態返回值來輸出此結果: 成功:0 失敗:1-255 命令執行完成之后,其狀態返回值保存于bash的特殊變量$?中。 [root@localhost ~]# ls anaconda-ks.cfg [root@localhost ~]# echo…

    Linux干貨 2018-03-11
  • 用戶管理和組管理

         Linux是一個多用戶多任務的系統 ,因此學習用戶管理和組管理,對我們工作和學習有很大的幫助。用戶是你登錄這個操作系統的憑證,因此用戶的創建和修改,刪除是用戶管理的基本工作,所以你掌握這些,對你的工作有很好的幫助。 用戶賬號管理 /etc/passwd username:x: UId:gid:comment:…

    Linux干貨 2016-08-10
  • N_28正則表達式及vim編輯的一些知識

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 ]# who | sort -nu | cut -d” ” -f1 2、取出最后登錄到當前系統的用戶的相關信息。 ]# who | tail -1 | cut -d” ” -f1 | id 3、取出當前系統上被用戶當作其…

    Linux干貨 2017-12-16
  • 文本編輯三劍客之gawk

     awk 本章內容: awk介紹 awk基本用法 awk變量 awk格式化 awk操作符 awk條件判斷 awk循環 awk數組 awk函數 調用系統命令 1.awk介紹 ★ Linux 文本處理工具三劍客:grep、sed、awk。其中grep是一種文本過濾工具;sed是文本行編輯器,而awk是一種報表生成器,就是對文件進行格式化處理的…

    Linux干貨 2016-09-24
  • bash 函數

        函數可以讓多條shell的命令組成語句塊,實現代碼重用和模塊化編程。讓我們在不用重復編寫一些腳本,下面讓我們來了解函數。 1,函數的簡介 函數在腳本中使用應先定義,聲明,再可以調用。 函數function 是由若干條shell 命令組成的語句塊,實現代碼重用和模塊化編程。 函數與shell 程序形式上是相似的,…

    Linux干貨 2016-08-24
  • 2016年8月11號學習博客

    shell腳本編程 shell腳本是包含一些命令或聲明,并符合一定格式的文本文件 shell腳本的用途有: 自動化常用命令 執行系統管理和故障排除 創建簡單的應用程序 處理文本或文件 命令查詢過程:別名–>內部變量–>hash–>$PATH ~]#bash -n 檢測腳本語法錯誤 ~]#bash -x 順…

    Linux干貨 2016-08-15
欧美性久久久久