shell指令碼和vim模式初步學習

2021-07-30 06:19:24 字數 2101 閱讀 6845

第一次linux作業竟然花了不止4個小時而且只做出兩道,真是受不了。

作業的題目如下

:2,8s/\/4/g

:/\(a[bc]\\)

[^abc]

\+\1

方法一
g/\n/s// \t
合併前

合併後

原理: 首先標記所有換行符,然後通過s命令把換行符換成製表符,這時第二行就會合併到第一行,第二行的標記被刪除,接著就會跑到第三行執行同樣操作,如此下去遍完成了偶數行的合併。但又乙個疑點,就是為什麼將\n替換成」 \t」後,從下面的結果可以看出空格的數量不一樣??

方法二

:%s/\(^.*$\)\n\(^.*$\)/\1 \2/g
原理: 每次對兩行操作,把兩行中的第一行替換成空格。 ^.*$匹配一行字元。類似\1 、\2等。

\(^.*$\)

去掉括號^.*$是乙個匹配一行字元 的正規表示式,^和$分別匹配行首和行尾,.匹配任意乙個字元,*匹配任意長度的任意字元。其中回車符\n不算做.和*的字元範圍內。\1選中的是第乙個帶有( 和 ) 的匹配該處正規表示式的內容;\2選中的是第二個帶有( 和 ) 的匹配該處正規表示式的內容。這樣看來,它是每次匹配兩行字元,然後將\n提換成空格,替換後的內容就變成了

第一行 空格 第二行

即這裡可以把「^.*$「` 替換為一行字元。

替換後的最終結果為

:2,8s/\/4/g
原理: 將2-8行的所有four單詞換成4,其中不包含fourteen和thirty-four等單詞。

\< 匹配單詞詞首

> 匹配單詞詞尾

/\(a[bc]\\)

[^abc]

\+\1

原理:\(a[bc]\\)匹配 a*** ***的長度為2,***的內容字元範圍為[bc]即b或c。由於匹配比較短,我們可以列出所有可能: abc、abb、acc、acb

[^abc] 匹配除abc以外的任意乙個字元,長度至少為1(+)

\1指的是這個地方有要匹配(a[bc]),重複其內容。我們可以用這個匹配%s/(^.*$)\n/\1 \1/g檢測,可以看出hello重複了兩次

執行模式後的結果

所以整個模式的作用是 匹配 abb***abb 、abc***abc 、acc***acc 、

acb***acb, ***是 [^abc] 匹配除abc以外的任意乙個字串,因為有\+所以***長度至少為1。

檢視$home目錄下的檔案資訊,將查詢到的資訊寫入到檔案,該檔案以「log_使用者名稱年月_日」命名,儲存到當前目錄(shell指令碼相同的目錄)下。(注:使用者名為當前正在使用的使用者名稱)

user=`whoami`

mydate=$(date +%y_

%m_%d)

filename="log_$_$"

echo $filename

lsinfo=`ls -ail $home`

echo $lsinfo>$filename

vim和shell指令碼基礎

gedit 圖形介面可以用 vi vim vim 檔名 檔案存在,開啟檔案 檔案不存在 建立檔案 檔案非空 退出 shift 1 q 退出 不儲存退出 2 q 強制退出 不儲存 3 w 儲存檔案內容 4 wq 儲存退出 x vim 三種模式 1 命令列模式 剛開打的狀態 2 底行模式 輸命令的狀態 ...

Shell指令碼程式設計 初步

指令碼是乙個包含一系列命令序列的文字檔案。當執行這個指令碼檔案時,檔案中包含的命令序列將得到自動執行。這種文字檔案可以執行,可以提高工作效率。擴充套件名為 sh 指令碼檔案通常以 bin bash或者 bin sh開頭。shell指令碼允許使用者設定和使用自己的變數,變數可以是數字或者字串,使用者無...

Vim編輯器和編寫Shell指令碼

命令模式 搜尋 複製 貼上 替換 刪除。切換的橋梁 輸入模式 相當於windows記事本,隨意編輯的編輯環境 末行模式 儲存 退出 設定編輯環境 shell指令碼 互動式 使用者每輸入一條命令就立即執行 批處理 由使用者事先編寫好乙個完整的shell 指令碼,shell 會一次性執行指令碼 中諸多的...