方法一:利用grep
我們提供的服務(wù)有:網(wǎng)站建設(shè)、成都做網(wǎng)站、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、昌江黎族ssl等。為千余家企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的昌江黎族網(wǎng)站制作公司
grep -v '^\s*$' test.txt
注:-v表示將匹配的結(jié)果進(jìn)行反轉(zhuǎn),正則表達(dá)式匹配空行。(空行可包括空格符制表符等空白字符)
方法二:利用sed
sed '/^\s*$/d' test.txt
注:d代表刪除該行
方法三:利用awk
awk NF test.txt
注:NF代表當(dāng)前行的字段數(shù),空行的話字段數(shù)為0,被awk解釋為假,因此不進(jìn)行輸出。
以上三種方式均可處理包含空白字符(空格符,制表符等)的空行。
方法四:若空行均由’\n'造成,則還可以利用tr命令去除空行?!禠inux就該這么學(xué)》
tr -s '\n' test.txt
注:-s代表將多個(gè)連續(xù)的字符壓縮成一個(gè)字符,這里是將多個(gè)‘\n'壓縮成一個(gè)'\n',達(dá)到去除空行的效果。
方法四的缺陷:如果首行就出現(xiàn)空行的話則無(wú)法去除首行的空行
那個(gè)命令本身就有問(wèn)題出來(lái)的結(jié)果是0;
修改后的命令如下:
last| grep [a-zA-Z]|egrep -v? ‘wtmp’|wc -l
grep [a-zA-Z]排除空行,因?yàn)榭招胁话帜?/p>
1. sed -i '/preSql/d' a.txt
---刪除匹配到 preSql的行
2.?sed -i '1d' a.txt
---刪除第一行
3. sed -i '3~2d'?a.txt
---從第三行開(kāi)始,每隔一行刪除
4.?sed -i '4,8d' a.txt
---刪除從第4行到第8行
5.?sed -i '$d'??a.txt
---刪除最后一行
6.?sed '/^$/d' a.txt
---刪除所有空行
7.?sed -i? '/Website Design/,$d' a.txt
---從匹配行到末尾行
8.?sed -i? '/Storage/,+2d' a.txt
--- 刪除匹配行和之后兩行
[1] 每?jī)尚泻喜⒃谝黄?/p>
@dahuawk 'ORS=NR%2?" ":"\n"{print}'
[2] 每三行合并在一起
@dahuawk 'ORS=NR%3?" ":"\n"{print}'
[3] 每四行合并在一起
@dahuawk 'ORS=NR%4?" ":"\n"{print}'
[4] 統(tǒng)計(jì)std cell和sRam占的面積
@dahusummaryReport
[5] 找出drc的port相關(guān)的數(shù)量
@dahucat postroute_opt.drc | grep -B1 Type: | grep -v Type: | grep "\[" |-
[6] 獲得選中的pin的名字
@innovusdbget selected.name
[7]? 對(duì)一個(gè)文件,多目標(biāo)刪除
@dahused -i 's/MODE1\|MODE2\|MODE3\|MODE4\|MODE5//g'
[8] 獲得不規(guī)則fplan的坐標(biāo)組
@innovusdbget top.fplan.boxes
[9] 在某個(gè)目錄下找到帶某個(gè)字符的文件[區(qū)分大小寫(xiě)]
@dahufind -iname "*tcic*"
[10] 在某個(gè)目錄下,遍歷所有文件內(nèi)容,得到含有某個(gè)字符/字符串的行
@dahugrep -r 'insertion delay' ./
[11] 查看當(dāng)前的INNOVUS版本號(hào)
@dahuecho $INVS_VER
[12] 替換某個(gè)目錄下所有文件內(nèi)容
@dahused -i"s/查找的內(nèi)容/替換后的內(nèi)容/g"`grep -rl"查找的內(nèi)容"./`
[13] 在gui界面下highlight某條path
@dahu ctd_trace?-from * ?-to * ?-color *
[14] 引用${REV},為什么采用大括號(hào){}
為了防止引用造成后面錯(cuò)亂。
如:/fs/omp_com_03/RELEASE/top2hlb/R1/HLB_DEF/${REV}/${top}.def.gz
[15] 解壓命令
gzip -d FileName.gz
[16] 換某個(gè)cell的坐標(biāo) {AAA, BBB}
@innovus dbset [dbget top.inst.name XXXXXXXX].pt_x AAA
@innovus dbset [dbget top.inst.name XXXXXXXX].pt_y BBB
@innovus zoomSelected
[17] 設(shè)置某一個(gè)cell不用
@innovus set_dont_touch BUFF false
@innovus set_dont_touch BUFF true
[18] 找某個(gè)性質(zhì)
@innovus dbSet [].?h
[19] 刪去空白行
vim 中:g/^s*$/d
簡(jiǎn)單解釋一下:
g :全區(qū)命令
/ :分隔符
^s*$ :匹配空行,其中^表示行首,s表示空字符,包括空格和制表符,*重復(fù)0到n個(gè)前面的字符,$表示行尾。連起來(lái)就是匹配只有空字符的行,也就是空行。
/d :刪除該行
[20] echo 寫(xiě)入帶有雙引號(hào)""的內(nèi)容。
echo ‘ “AAAbbb” ’ 1.tcl
[21] echo 寫(xiě)入帶有單引號(hào)‘’的內(nèi)容。
echo “ ‘AAAbbb' ” 1.tcl
[22] keep CPU 數(shù)目
@innovussetMultiCpuUsage -localCpu 16
@innovushistory keep 999999
[23] 打開(kāi)xlsm文件
openoffice.org 文件
[24] 顯示clock path路徑
@innovus report_timing -to XXX -path_type full_clock
[25]報(bào)出沒(méi)有被約束到的path
@innovus report_timing -to XXX -uncounstrained
[26]報(bào)出穿過(guò)path中的某一點(diǎn)
@innovus report_timing -to XXX -view
view = MODE + corner
[27] vim 全選(高亮顯示 ):按esc后,然后ggvG或者ggVG
[28]
權(quán)限: 所有用戶
用法:cat [option] [--help] [--version] filename …
說(shuō)明:
把文件內(nèi)容連接后輸出到標(biāo)準(zhǔn)輸出(控制臺(tái))
fileNameB 重定向輸出到另一個(gè)文件
常用參數(shù):
-n 或 --number 由 1 開(kāi)始對(duì)所有輸出的行數(shù)編號(hào)
-b 或 --number-nonblank 和 -n 相似,只不過(guò)對(duì)于空白行不編號(hào)
-s 或 --squeeze-blank 當(dāng)遇到有連續(xù)兩行以上的空白行,就代換為一行的空白行
--help 顯示幫助信息
示例:
cat -n textfile1 textfile2 把 textfile1 的內(nèi)容加上行號(hào)后輸入 textfile2 文件中
cat -b textfile1 textfile2 textfile3 把 textfile1 和 textfile2 的內(nèi)容加上行號(hào)(空白行不加)之后追加到 textfile3。
Tips:
輸出到文件,每次都會(huì)重新生成文件,如果輸出的文件已存在,原內(nèi)容會(huì)丟失。
追加到文件,原文件內(nèi)容不會(huì)丟失
sed命令行格式:sed [options] 'command' file(s)
options常用選項(xiàng):
-n或--quiet或——silent:僅顯示script處理后的結(jié)果;
-e:以選項(xiàng)中的指定的script來(lái)處理輸入的文本文件;
-f:以選項(xiàng)中指定的script文件來(lái)處理輸入的文本文件;
-r∶sed 的動(dòng)作支援的是延伸型正規(guī)表示法的語(yǔ)法;
-i∶直接修改讀取的檔案內(nèi)容,而不是由螢?zāi)惠敵?
-h或--help:顯示幫助;
-V或--version:顯示版本信息。
Command常用命令:
a:新增,a 的后面可以接字符串,而這些字符串會(huì)在新的一行出現(xiàn)(目前的下一行);
c:取代,c 的后面可以接字符串,這些字符串可以取代 n1.n2 之間的行;
d:刪除,d 后面通常不接任何字符串;
i:插入,i 的后面可以接字符串,而這些字符串會(huì)在新的一行出現(xiàn)(目前的上一行);
p:列印,亦即將某個(gè)選擇的資料印出。通常 p 會(huì)與參數(shù) sed -n 一起運(yùn)作;
s:取代,可以直接進(jìn)行取代的工作,通常與正規(guī)表達(dá)式搭配使用。
實(shí)例說(shuō)明:
新增操作:a命令
sed '/^bird/a\test' file將test追加到 以bird開(kāi)頭的行后面
刪除操作:d命令
sed '/^$/d' file #刪除空白行;
sed '2d' file #刪除第二行;
sed '2.$d' file #刪除第2行到最后一行;
sed '$d' file #刪除最后一行;
sed '/^bird/'d file #刪除所有開(kāi)頭是bird的行;
插入操作:i命令
sed -i '3i\bird ' bird.conf #在bird.conf文件第3行之前插入bird
替換文本中的字符串:s命令
sed 's/bird/birds/' file #將文本中的bird替換成birds;
sed -i 's/ bird / birds /g' file #將file文件中每一行的第一個(gè)bird替換為birds;