第一次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 會一次性執行指令碼 中諸多的...