C++學習之shell高級和正則表達式

目錄

1.正則表達式

2.C中使用正則

3.復習

4.sort命令

5.uniq命令

6.wc命令

7.grep命令

8.find命令

9.xargs命令

10.sed命令

11.awk命令

12.crontab


1.正則表達式

1 管道
? ? 使用| 將多個命令拼接在一起
? ? 原理,就是將前一個命令的標準輸出作為后一個命令的標準輸入來重定向 ,標準錯誤輸出是不會重定向


? ? 需求,編寫一個簡單的管道命令,讀取標準輸入,將標準輸入的數據轉為大寫,然后輸出

? ? more 命令
? ? ? ? 將標準輸入的內容進行緩慢向下查看,要人工操作向下
? ? ? ? 只支持向下走,不支持往回走

? ? less 命令
? ? ? ? 比more更加完善,支持往回滾,也支持類似vim的操作,查找 hjkl

2.C中使用正則

2 tee 命令
? ? 將標準輸出重新輸出,同時存一份到文件
? ? 常用的場景
? ? ? ? 開一個服務,服務一直在刷log,需要實時看到log,但是又想將log存成一個文件

3.復習


3 文件重定向
? ? cmd > file ? ? ? ? ? ? ?把標準輸出重定向到新文件中
? ? cmd >> file ? ? ? ? ? ? 追加

? ? cmd > file 2>&1 ? ? ? ? 標準出錯也重定向到1所指向的file里

? ? ? ? 2>&1?
? ? ? ? ? ? 文件描述符2 也重定向到文件描述符1的位置
? ? ? ? ? ? 標準錯誤輸出也重定向到標準輸出的位置

? ? cmd >> file 2>&1
? ? cmd < file
? ? ? ? 將file的內容重定向到cmd命令的標準輸入
? ? cmd < file1 > file2 ? ? 輸入輸出都定向到文件里
? ? cmd < &fd ? ? ? ? ? ? ? 把文件描述符fd作為標準輸入

? ? cmd > &fd ? ? ? ? ? ? ? 把文件描述符fd作為標準輸出

? ? cmd < &- ? ? ? ? ? ? ? ?關閉標準輸入

4.sort命令

4 函數
? ? function 函數名() ? ? ? ?#小括號里邊也不需要填參數列表
? ? {
? ? ? ? local var=value ? #局部變量

? ? ? ? return 1 ? ? ? ? ?#return 只能返回整數,不能返回其他類型 ,返回值是作為退出狀態來使用
? ? }

? ? function關鍵字可以省略 ? ,小括號也可以省略 ,但是兩個必須要保留一個,不然解析器不知道是要定義一個函數


? ? 調用函數的方法,就跟普通命令一樣

? ? ? ? 函數名 arg1 arg2 ?...

? ? ? ? 函數的執行狀態看return語句,如果沒有return語句,就以函數里邊最后一條執行的指令的返回狀態作為整個函數的退出狀態


? ? 函數支持遞歸
? ? ? ? 遍歷目錄,包括子目錄,如果是文件就輸出xxx是文件,如果是目錄就輸出xxx是目錄


? ? 函數的傳參
? ? ? ? 也是使用 $1 $2 ... 來獲取函數內的參數
? ? #!/bin/bash

? ? function visit
? ? {
? ? ? ? local dir="$1"
? ? ? ? for f in `ls $1`
? ? ? ? do
? ? ? ? ? ? if [ -f "$dir/$f" ]
? ? ? ? ? ? then
? ? ? ? ? ? ? ? echo "$dir/$f is a file"
? ? ? ? ? ? elif [ -d "$dir/$f" ]
? ? ? ? ? ? then
? ? ? ? ? ? ? ? echo "$dir/$f is a dir"
? ? ? ? ? ? ? ? visit "$dir/$f"
? ? ? ? ? ? else
? ? ? ? ? ? ? ? echo "$dir/$f is not recognized"?
? ? ? ? ? ? fi
? ? ? ? done
? ? }

? ? visit .


? ? 腳本的調試
? ? ? ? -n ? 遍歷一下腳本,檢查語法錯誤
? ? ? ? -v ? 一遍執行腳本一遍將解析到的腳本輸出來
? ? ? ? -x ? 執行腳本的同時打印每一句命令,把變量的值都打印出來 ?(常用)

? ? ? ? 打開調試的方法
? ? ? ? ? ? 1. bash -x ?腳本.sh
? ? ? ? ? ? 2. 腳本開頭 使用 #!/bin/bash -x
? ? ? ? ? ? 3. 腳本中顯式的使用 set -x 打開 ? 使用 set +x 關閉調試

5.uniq命令

5 正則表達式
練習: ? ? ? ? ? ? ??
? ? 1 以S開頭的字符串 ? ? ?
? ? ? ? ^S

? ? 2 以數字結尾的字符串
? ? ? ? [0123456789] ? 匹配任意數字
? ? ? ? [0-9]
? ? ? ? \d
? ? ? ? $ ? ? ? ? ? ? ? 匹配字符串結尾

? ? ? ? [0-9]$

? ? 3 匹配空字符串(沒有任何字符)
? ? ? ? ^$
? ? 4 字符串只包含三個數字
? ? ? ? ^\d\d\d$
? ? ? ? ^\d{3}$
? ? ? ? ? ? {n} 花括號括起來一個數字,表示前面的單元重復n次

? ? 5 字符串只有3到5個字母
? ? ? ? 控制最少重復次數和最大的重復次數

? ? ? ? {m,n} m表示前面單元最小重復次數,n表示最大重復次數

? ? ? ? [a-zA-Z] ? 表示大小寫字母 ?如果中括號中有多個區間,區間之間不要留空格或其他分隔符

? ? ? ? ^[a-zA-Z]{3,5}$


? ? 6 匹配不是a-z的任意字符
? ? ? ? [^a-z] ? ?中括號中第一個字符如果是^,表示區間取反
? ? ? ? ^[^a-z]$

? ? 7 字符串有0到1個數字或者字母或者下劃線
? ? ? ? {0,1} 表示重復0-1次
? ? ? ? ? ? ? 也可以表示0-1次重復

? ? ? ? ^[0-9a-zA-Z_]?$
? ? ? ? ^\w?$


? ? 8 字符串有1個或多個空白符號(\t\n\r等)
? ? ? ? \s ?表示空白字符 包括 \t\n\r ....
? ? ? ? {1,} ? 表示重復1-n ?跟+號一樣

? ? ? ? ^\s+$


? ? 9 字符串有0個或者若干個任意字符(除了\n)
? ? ? ? . ?代表任意字符,除了\n
? ? ? ? ^.{,}$ ? 花括號中兩個參數置空表示重復次數任意 0-n
? ? ? ? ^.*$ ? ? *表示前面的單元重復0-n次

? ? ? ? ? 0-1
? ? ? ? + 1-n
? ? ? ? * 0-n


? ? 10 匹配0或任意多組ABC,比如ABC,ABCABCABC
? ? ? ? 使用小括號來講多個單元重新組合成為一個單元

? ? ? ? ^(ABC)*$


? ? 11 字符串要么是ABC,要么是123
? ? ? ? | 表示選擇,選擇兩邊的正則匹配一個

? ? ? ? ^ABC$|^123$
? ? ? ? ^(ABC|123)$ ? ? 小括號也可以將選擇范圍控制在括號內


? ? 12 字符串只有一個點號 ?
? ? ? ? 做轉義 還是使用\

? ? ? ? ^\.$

? ? 13 匹配十進制3位整數 ? ? ? ? ? ??
? ? ? ? 100 - 999
? ? ? ? ^[1-9][0-9]{2}$


? ? ? ? 匹配十進制 0-999 的數字
? ? ? ? ? ? 分段
? ? ? ? ? ? ? ? 一位數
? ? ? ? ? ? ? ? ? ? [0-9]
? ? ? ? ? ? ? ? 兩位數
? ? ? ? ? ? ? ? ? ? 10-99
? ? ? ? ? ? ? ? ? ? [1-9][0-9]
? ? ? ? ? ? ? ? 三位數
? ? ? ? ? ? ? ? ? ? [1-9][0-9]{2}


? ? ? ? ? ? ^([0-9]|[1-9][0-9]{1,2})$

? ? 14 匹配0-255的整數

? ? ? ? 匹配 ip?

? ? ? ? ? ? 分段
? ? ? ? ? ? ? ? 一位數
? ? ? ? ? ? ? ? ? ? [0-9]
? ? ? ? ? ? ? ? 兩位數
? ? ? ? ? ? ? ? ? ? 10-99
? ? ? ? ? ? ? ? ? ? [1-9][0-9]

? ? ? ? ? ? ? ? 三位數
? ? ? ? ? ? ? ? ? ? 100-199
? ? ? ? ? ? ? ? ? ? ? ? 1[0-9]{2}

? ? ? ? ? ? ? ? ? ? 200-249
? ? ? ? ? ? ? ? ? ? ? ? 2[0-4][0-9]

? ? ? ? ? ? ? ? ? ? 250-255
? ? ? ? ? ? ? ? ? ? ? ? 25[0-5]

? ? 15 匹配端口號
? ? ? ? 0-65535

? ? 16 email
? ? ? ? [\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?


? ? 基礎的正則
? ? ? ? +?* 是普通字符
? ? 擴展的正則
? ? ? ? +?* 是特殊字符

? ? perl的正則
? ? ? ? 最常用

? ? ? ? perl正則在擴展正則之上添加了一些特殊符號
? ? ? ? ? ? \d \w \s ....

6.wc命令

6 sort
? ? 命令從標準輸入中讀取數據然后按照字符串內容進行排序
? ? -f 忽略字符大小寫
? ? -n 比較數值大小
? ? -t 指定分割符,默認是空格或者tab
? ? -k 指定分割后進行比較字段
? ? -u 重復的行只顯示一次
? ? -r 反向排序
? ? -R 打亂順序
? ? ? ? 同樣的兩行洗不亂


? ? ? ? 將/etc/passwd 根據用戶id來排序
? ? ? ? sort -t: -k3 -n < /etc/passwd

7.grep命令

7 uniq
? ? 去除重復的行,前提是重復的行連續
? ? -c 顯示每行重復的次數
? ? -d 僅顯示重復過的行
? ? -u 僅顯示不曾重復的行
? ? ? ? sort < test.txt | uniq

8.find命令

9 grep
? ? global regular expression print
? ? -c 只輸出匹配行的計數
? ? -i 不區分大小寫
? ? -H 文件名顯示
? ? -r 遞歸遍歷目錄
? ? -n 顯示行號
? ? -s 不顯示不存在或無匹配文本的錯誤信息
? ? -v 顯示不包含匹配文本的所有行,這個參數經常用于過濾不想顯示的行
? ? -E 使用擴展的正則表達
? ? -P 使用perl的正則表達式
? ? -F 匹配固定的字符串,而非正則表達式


? ? egrep ?= grep -E
? ? fgrep ?= grep -F
? ? rgrep ?= grep -r

? ? grep 默認使用的是基礎的正則

9.xargs命令

10 find

? ? find pathname -options [-print -exec -ok ...]

? ? option 選項如下:
? ? ? ? -name 按照文件名查找文件。
? ? ? ? ? ? find . -name "1.txt"
? ? ? ? -perm 按照文件權限來查找文件。
? ? ? ? ? ? find . -perm 660
? ? ? ? -user 按照文件屬主來查找文件。
? ? ? ? -group 按照文件所屬的組來查找文件。
? ? ? ? -mtime -n +n 按照文件的更改時間來查找文件,-n表示文件更改時間距現在n天以內,+n表示文件更改時間距現在
? ? ? ? ? ? n天以前。find命令還有-atime和-ctime 選項,但它們都和-m time選項。
? ? ? ? -atime 訪問時間
? ? ? ? -ctime 創建時間
? ? ? ? -nogroup 查找無有效所屬組的文件,即該文件所屬的組在/etc/groups中不存在。
? ? ? ? -nouser 查找無有效屬主的文件,即該文件的屬主在/etc/passwd中不存在。
? ? ? ? -newer file1 ! file2 查找更改時間比文件file1新但比文件file2舊的文件。
? ? ? ? -type 查找某一類型的文件,諸如:
? ? ? ? ? ? b - 塊設備文件。
? ? ? ? ? ? d - 目錄。
? ? ? ? ? ? c - 字符設備文件。
? ? ? ? ? ? p - 管道文件。
? ? ? ? ? ? l - 符號鏈接文件。
? ? ? ? ? ? f - 普通文件。
? ? ? ? ? ? s - socket文件

? ? ? ? -exec
? ? ? ? ? ? find . -name "*.txt" -exec gzip {} \;

? ? ? ? ? ? 查找當前目錄下的txt文件并且打包成為gzip
? ? ? ? ? ? 每找到一個文件,就會執行exec后面的命令
? ? ? ? ? ? ? ? gzip ./a/2.txt
? ? ? ? ? ? ? ? gzip ./a/6.txt

? ? ? ? ? ? ? ? 最后是一個\; ?反斜杠不能省,作為當前exec后面命令的結束符

? ? ? ? -ok?
? ? ? ? ? ? 跟-exec用法一樣,但是每找到一個文件要執行后面的命令前會給用戶確認

10.sed命令

11 xargs
? ??
? ? 將標準輸入的參數整齊的拼湊在一行里邊

? ? 單獨使用該命令沒什么用,要配合其他命令來使用


? ? docker ps -aq | xargs docker rm -f

? ? find . -name "*.txt" | xargs -I{} mv {} ?xxx/
? ? ? ? -I{} 指定一個替換字符串作為參數替換
? ??

11.awk命令

12 sed
? ? 文本1 -> ?sed + 腳本 -> 文本2?

? ? ed 編輯器 ? -> ?sed ? -> vim?

? ? sed option 'script' file1 file2 ... ? ? ? ? ? ? sed 參數 ?‘腳本(/pattern/action)’ 待處理文件
? ? sed option -f scriptfile file1 file2 ... ? ? ? ?sed 參數 –f ‘腳本文件’ 待處理文件


? ? ? ? p, ?print ? ? ? ? ? 打印
? ? ? ? a, ?append ? ? ? ? ?追加
? ? ? ? i, ?insert ? ? ? ? ?插入
? ? ? ? d, ?delete ? ? ? ? ?刪除
? ? ? ? s, ?substitution ? ?替換

12.crontab


13 awk

? ? awk option 'script' file1 file2 ...
? ? awk option -f scriptfile file1 file2 ...

? ? 最常見用法就是過濾哪一列
? ? xxxx | awk '{print $2}'


? ? 腳本格式
? ? {actions} ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? 每一行文本都無條件的執行腳本
? ? /pattern/{actions}
? ? ? ? 匹配了模式之后再執行后面的動作
? ? condition{actions}
? ? ? ? BEGIN
? ? ? ? ? ? 在遍歷文本的第一行之前會執行某個動作
? ? ? ? END
? ? ? ? ? ? 在遍歷完文本之后再去執行某個動作


? ? ProductA 30
? ? ProductB 76
? ? ProductC 55

? ? 在輸出表格之前輸出表頭 ?產品名字 ?庫存
? ? 輸出完表格之后 ?輸出 ? ?庫存總量 : xxxx

? ? 在遍歷之前輸出表頭
? ? BEGIN{
? ? ? ? printf "%s\t%s\n","產品","庫存";
? ? ? ? sum=0;
? ? }
? ? 在遍歷每一行的過程中輸出每一行的內容,將庫存加到sum變量
? ? {
? ? ? ? printf "%s\t%s\n",$1,$2;
? ? ? ? sum+=$2;
? ? }
? ? 遍歷完之后輸出sum變量
? ? END{
? ? ? ? printf "庫存總量:%d\n",sum
? ? }

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/904296.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/904296.shtml
英文地址,請注明出處:http://en.pswp.cn/news/904296.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Vue】 實現TodoList案例(待辦事項)

目錄 組件化編碼流程&#xff08;通用&#xff09; 1.實現靜態組件&#xff1a;抽取組件&#xff0c;使用組件實現靜態頁面效果 2.展示動態數據&#xff1a; 1. 常規 HTML 屬性 3.交互——從綁定事件監聽開始 什么時候要用 event&#xff1a; 什么時候不需要用 event&am…

【Bootstrap V4系列】學習入門教程之 組件-卡片(Card)

Bootstrap V4系列 學習入門教程之 組件-卡片&#xff08;Card&#xff09; 卡片&#xff08;Card&#xff09;一、Example二、Content types 內容類型2.1 Body 主體2.2 Titles, text, and links 標題、文本和鏈接2.3 Images 圖片2.4 List groups 列表組2.5 Kitchen sink 洗滌槽…

java學習之數據結構:四、樹(代碼補充)

這部分主要是用代碼實現有序二叉樹、樹遍歷、刪除節點 目錄 1.構建有序二叉樹 1.1原理 1.2插入實現 2.廣度優先遍歷--隊列實現 3.深度優先遍歷--遞歸實現 3.1先序遍歷 3.2中序遍歷 3.3后序遍歷 4.刪除 4.1刪除葉子節點 4.2刪除有一棵子樹的節點 4.3刪除有兩棵子樹的節…

架構進階:什么是數據架構,如何理解數據架構?(華為)

數據架構是企業架構的重要組成部分,DAMA、IBM 及國內大廠對其定義各有側重。它包含數據資產目錄、數據標準、數據模型和數據分布四個組件。數據資產目錄可梳理企業數據資產,數據標準統一數據含義和規則,數據模型反映業務對象關聯關系,數據分布呈現數據流動情況。數據架構是…

Unity SpriteEditor(精靈圖片編輯器)

&#x1f3c6; 個人愚見&#xff0c;沒事寫寫筆記 &#x1f3c6;《博客內容》&#xff1a;Unity3D開發內容 &#x1f3c6;&#x1f389;歡迎 &#x1f44d;點贊?評論?收藏 &#x1f50e;SpriteEditor&#xff1a; 精靈圖片編輯器 &#x1f4cc;用于編輯2D游戲開發中使用的Sp…

【網絡原理】從零開始深入理解HTTP的報文格式(一)

本篇博客給大家帶來的是網絡HTTP協議的知識點, 重點介紹HTTP的報文格式. &#x1f40e;文章專欄: JavaEE初階 &#x1f680;若有問題 評論區見 ? 歡迎大家點贊 評論 收藏 分享 如果你不知道分享給誰,那就分享給薯條. 你們的支持是我不斷創作的動力 . 王子,公主請閱&#x1f68…

ElasticSearch深入解析(九):Object、Nested、Flattened類型

文章目錄 一、Object 類型&#xff1a;默認的嵌套對象處理方式核心原理典型場景關鍵限制 二、Nested 類型&#xff1a;解決嵌套數組的關聯查詢核心原理典型場景使用示例注意事項 三、Join 類型&#xff1a;跨文檔的父子關聯核心原理典型場景使用示例注意事項 四、Flattened 類型…

36、C#中的?法聲明參數關鍵字params,ref,out的意義及?法

在C#中&#xff0c;params、ref 和 out 是方法聲明中用于修飾參數的關鍵字&#xff0c;它們各自有不同的用途和語義。以下是它們的詳細說明和用法&#xff1a; 1、 params 關鍵字 意義 params 允許方法接受可變數量的參數&#xff0c;這些參數會被編譯為一個數組。適用于參數…

【大模型實戰篇】華為信創環境采用vllm部署QwQ-32B模型

1. 背景 本文分享在華為昇騰機器上部署QwQ-32B模型的實踐。 首先華為自己是提供了一套在信創機器&#xff08;NPU&#xff09;上部署模型的方案【1】&#xff0c;但是部署之后&#xff0c;測試發現會有輸出截斷的現象。QwQ-32B本身是支持128k的最大上下文長度&#xff0c;定位…

前端面經-VUE3篇(二)--vue3基礎知識(二)計算屬性(computed)、監聽屬性(Watch)

一、計算屬性(computed) 計算屬性&#xff08;Computed Properties&#xff09;是 Vue 中一種特殊的響應式數據&#xff0c;它能基于已有的響應式數據動態計算出新的數據。 計算屬性有以下特性&#xff1a; 自動緩存&#xff1a;只有當它依賴的響應式數據發生變化時&#xff…

[預備知識] 5. 優化理論(一)

優化理論 梯度下降&#xff08;Gradient Descent&#xff09; 數學原理與可視化 梯度下降是優化領域的基石算法&#xff0c;其核心思想是沿負梯度方向迭代更新參數。數學表達式為&#xff1a; θ t 1 θ t ? α ? θ J ( θ t ) \theta_{t1} \theta_t - \alpha \nabla…

大模型微調Fine-tuning:從概念到實踐的全面解析

目錄 引言 一、什么是大模型微調&#xff1f; 1.1 預訓練與微調的區別 1.2 微調的技術演進 二、為什么需要微調&#xff1f; 2.1 解決大模型的固有局限 2.2 微調的優勢 三、主流微調方法 3.1 全參數微調 3.2 參數高效微調&#xff08;PEFT&#xff09; 四、微調實踐指…

Docker 使用下 (二)

Docker 使用下 &#xff08;二&#xff09; 文章目錄 Docker 使用下 &#xff08;二&#xff09;前言一、初識Docker1.1 、Docker概述1.2 、Docker的歷史1.3 、Docker解決了什么問題1.4 、Docker 的優點1.5 、Docker的架構圖 二、鏡像三、容器四、數據卷4.1、數據卷的概念4.2 、…

洛谷P12238 [藍橋杯 2023 國 Java A] 單詞分類

[Problem Discription] \color{blue}{\texttt{[Problem Discription]}} [Problem Discription] Copy from luogu. [Analysis] \color{blue}{\texttt{[Analysis]}} [Analysis] 既然都是字符串前綴的問題了&#xff0c;那當然首先就應該想到 Trie \text{Trie} Trie 樹。 我們可…

pta作業中有啟發性的程序題

1 【知識點】&#xff1a;多態 函數接口定義&#xff1a; 以Student為基類&#xff0c;構建GroupA, GroupB和GroupC三個類 裁判測試程序樣例&#xff1a; #include<iostream> #include <string> using namespace std;/* 請在這里填寫答案 */int main() {const …

Scrapy框架之CrawlSpider爬蟲 實戰 詳解

CrawlSpider 是 Scrapy 框架中一個非常實用的爬蟲基類&#xff0c;它繼承自 Spider 類&#xff0c;主要用于實現基于規則的網頁爬取。相較于普通的 Spider 類&#xff0c;CrawlSpider 可以根據預定義的規則自動跟進頁面中的鏈接&#xff0c;從而實現更高效、更靈活的爬取。 Scr…

Glide 如何加載遠程 Base64 圖片

最近有個需求&#xff0c;后端給出的圖片地址并不是正常的 URL&#xff0c;而且需要一個接口去請求&#xff0c;但是返回的是 base64 數據流。這里不關心為啥要這么多&#xff0c;原因有很多&#xff0c;可能是系統的問題&#xff0c;也可能是能力問題。當然作為我們 Android 程…

004-nlohmann/json 快速認識-C++開源庫108杰

了解 nlohmann/json 的特點&#xff1b;理解編程中 “數據戰場”劃分的概念&#xff1b;迅速上手多種方式構建一個JSON對象&#xff1b; 1 特點與安裝 nlohmann/json 是一個在 github 長期霸占 “JSON” 熱搜版第1的CJSON處理庫。它的最大優點是與 C 標準庫的容器數據&#xf…

#基礎Machine Learning 算法(上)

機器學習算法的分類 機器學習算法大致可以分為三類&#xff1a; 監督學習算法 (Supervised Algorithms&#xff09;:在監督學習訓練過程中&#xff0c;可以由訓練數據集學到或建立一個模式&#xff08;函數 / learning model&#xff09;&#xff0c;并依此模式推測新的實例。…

正弦波、方波、三角波和鋸齒波信號發生器——Multisim電路仿真

目錄 Multisim使用教程說明鏈接 一、正弦波信號發生電路 1.1正弦波發生電路 電路組成 工作原理 振蕩頻率 1.2 正弦波發生電路仿真分析 工程文件鏈接 二、方波信號發生電路 2.1 方波發生電路可調頻率 工作原理 詳細過程 2.2 方波發生電路可調頻率/可調占空比 調節占空比 方波產生…