原創|行業資訊|編輯:龔雪|2015-01-07 09:52:45.000|閱讀 525 次
概述:10個Unix命令技巧幫助你化繁為簡,輕松玩轉Unix命令。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
Unix命令為我們的工作提供了極大的便利。這里分享10個Unix命令小竅門,讓我們一起將大工作量變得更快速。
如果你知道$NF,這個技巧就相對簡單。
awk '{print $NF} awk -F: '{print $NF}'
NF編程代表字段數(e.g., 5),因此,$NF 代表字段值 (e.g., $5)。
$ cat numbers 1 2 3 4 5 one two three four five $ awk '{print $NF}' numbers 5 five
這個技巧,在打印文件最右邊的字時很有幫助,即使是每行包含不同字數的詞,也可用。如果你想打印其他行末的詞,也可以使用NF作為字段選項的錨。在這個命令中,我們使用NF-1選擇最后一個字段.
$ awk '{print $(NF-1)}' numbers 4 four
從文件中刪除特定行應該是一個很簡單的操作。在下面的例子中,確保是1到11的文件數,一個數字一行。使用命令,像是,第七行像是,"7d"命令就是刪除第七行,示例如下:
$ sed -i '7 d' numbers $ cat numbers 1 2 3 4 5 6 8 9 10 11
你可以使用范圍刪除一個序列行,命令是【sed -i '7,9 d' numbers】,意思是刪除7至9行。
刪除文件中的空白行方法有很多,我使用最簡單的一個。在下面的命令中,使用 ^$代替行空白。^ 代表一行的開始,$ 代表一行的結束,因此,一行的開始結束中,沒有東西,為空白。
$ cat strings This is the last day of your life thus far Mr. Logic $ sed -i '/^$/d' strings $ cat strings This is the last day of your life thus far Mr. Logic
使用 sed命令(如下),可以刪除空白行并備份原文件。
$ perl -i.bak -n -e'print if /\S/' strings $ ls -l strings* -rw-r----- 1 shs faculty 53 Jan 4 2015 strings -rw-r----- 1 shs faculty 54 Jan 4 18:36 strings.bak
值得注意的是,單個空白行刪除,文件比原文件要小一個字符。
Unix系統中找符號鏈接也很簡單,在查找命令中一個按文件類型查找的選項。查找符號鏈接的符號為"l"
$ find . -type l -ls 12763168 0 lrwxrwxrwx 1 shs staff 6 Jan 27 2013 ./hlinks/5 -> 5beers 12763423 0 lrwxrwxrwx 1 shs staff 4 Nov 23 2013 ./projects/tmp -> /tmp
Unix系統可以創建不指向當前文件的符號鏈接,創建后刪除原文件也是可以的。也可以創建多個符號鏈接??梢杂貌檎颐詈蚉erl命令追蹤他。
find . -type l -print | perl -nle '-e || print';
使用以下命令:
$ arch i686
該命令在 Linux 下也能用。當我在Solaris下使用時,得到答案"sun4"。
rev命令一次性完全顛倒字符,你可以將文本改成這樣:
$ echo "dlroW ,olleH" | rev Hello, World
也可以寫文件名,然后完全顛倒。
$ rev strings yad tsal eht si sihT raf suht efil ruoy fo cigoL .rM
我們要考慮幾個問題,一個詞可能在另一個詞中出現,比如"the"是"there"的一部分;一個詞也可能在一行里多次出現。我們怎么計算呢?使用【grep -c "word" filename 】命令,他也是和【grep word filename】做差不多的事。他只會告訴你字在每行出現的次數,而不是全部出現的次數,我們可以看看下面的代碼:
$ cat words the the the the the then there they $ grep -c the words 1
另一種選擇,你可以這樣做:
#!/bin/bash count=0 look4=$1 file=$2 for word in `cat $file` do if [ $word == "$look4" ]; then ((count++)) fi done echo $count
在這個腳本中,如果匹配我們所搜索的,for循環可以讓我們看到每個字和增量數。不過該腳本不一定通用。
完成這個工作,我使用以下命令:
sed s/this/that/g filename
無論命令變得多復雜,你都可以在this,that間變換。我們來一個相對復雜的例子。使用 \b標記,確保將 "the" 變為 "why"。
$ cat words the the the the the then there they $ sed -e 's/\bthe\b/why/g' words why why why why why then there they
看到了嗎"the"無論在多長的句子里都沒變。
如果你想改變"The" 或者 "the",你可以使用下面的命令:
$ sed -e 's/\bthe\b/why/g' words The why why why why then there they $ sed -e 's/\bthe\b/why/gi' words why why why why why then there they
如果不導出設置的shell,Subshells是不會認變量的。
$ cat showme #!/bin/bash echo $something $ something="well done" $ ./showme $ export something $ ./showme well done
轉載請注明:文章轉載自:慧都控件網
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都控件網