Shell Tips - (sed/awk equivalent Unix command ) 转:sed/awk与unix命令等价代码

转自: www.chinaunix.net 特此感谢

sed与unix 命令等价代码:

-------------------------------------------------------------------------------
cat            |  sed ':'
cat -s         |  sed '/./,/\^$/!d'
tac            |  sed '1!G;h;$!d'
grep           |  sed '/patt/!d'
grep -v        |  sed '/patt/d'
head           |  sed '10q'
head -1        |  sed 'q'
tail           |  sed -e ':a' -e '$q;N;11,$D;ba'
tail -1        |  sed '$!d'
tail -f        |  sed -u '/./!d'
cut -c 10      |  sed 's/\\(.\\)\\{10\\}.\*/\\1/'
cut -d: -f4    |  sed 's/\\(\\([\^:]\*\\):\\)\\{4\\}.\*/\\2/'
tr A-Z a-z     |  sed 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'
tr a-z A-Z     |  sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'
tr -s ' '      |  sed 's/ \\+/ /g'
tr -d '\\012'   |  sed 'H;$!d;g;s/\\n//g'
wc -l          |  sed -n '$='
uniq           |  sed 'N;/\^\\(.\*\\)\\n\\1$/!P;D'
rev            |  sed '/\\n/!G;s/\\(.\\)\\(.\*\\n\\)/&\\2\\1/;//D;s/.//'
basename       |  sed 's,.\*/,,'
dirname        |  sed 's,[\^/]\*$,,'
xargs          |  sed -e ':a' -e '$!N;s/\\n/ /;ta'
paste -sd:     |  sed -e ':a' -e '$!N;s/\\n/:/;ta'
cat -n         |  sed '=' | sed '$!N;s/\\n/ /'
grep -n        |  sed -n '/patt/{=;p;}' | sed '$!N;s/\\n/:/'
cp orig new    |  sed 'w new' orig[/code:1:739eb4cef5]
-------------------------------------------------------------------------------

awk与unix 命令等价代码:

-------------------------------------------------------------------------------
cat            |awk '{print}'
cat -s         |awk '{blank = NF == 0 ? ++blank : 0; if (blank <= 1) print;}'
tac            |awk '{t[NR] = $0;}END{for (i = NR; i >= 1; i--) print t[i];}'
grep patten    |awk '/patten/{print}'
grep -v patten |awk '! /patten/{print}'
head           |awk 'NR <= 10 {print}' 24.sh
head -1        |awk '{print; exit; }' 24.sh
tail           |awk '{t[n++ % 10] = $0}END{for (i = 0; i < 10; i++) print t[n++ % 10];}'
tail -1        |awk '{t = $0}END{print t}'
cut -c 10      |awk '{print substr($0, 10, 1)}'
cut -d: -f4    |awk -F: '{if (NF > 1) print $4; else print;}'
tr A-Z a-z     |awk '{print tolower($0);}' se.sh
tr a-z A-Z     |awk '{print toupper($0);}' se.sh
tr -s ' '      |awk '{print gensub(" +", " ", "g")}'
tr -d '\\012'   |awk '{printf "%s", $0}'
wc -l          |awk 'END{printf "% 7d\\n", NR-1}'
uniq           |awk '{if (NR == 1 || ln != $0) print; ln = $0;}'
rev            |awk '{l = ""; for (i = length($0); i > 0; i--) printf "%c", substr($0, i, 1); print "";}'
basename       |awk -F'/' '{print $NF}'
dirname        |awk -F'/' '{if (NF <= 1) printf "."; else {OFS="/"; $NF=""; printf "%s", substr($0, 1, length($0) - 1);}}'
xargs          |awk '{printf "%s ", $0}END{print}'
paste -sd:     |awk 'NR > 1{printf ":%s", $0}'
cat -n         |awk '{printf "% 6d  %s\\n", NR, $0}'
grep -n        |awk '/ss/{print NR":"$0}'
cp orig new    |awk '{print > "new"}' orig
-------------------------------------------------------------------------------


 

Comments:

只是转载,对每个命令还没有进行实验。

Posted by xue on July 06, 2007 at 07:33 AM CST #

好东西我也转

Posted by 左倾45度 on July 15, 2007 at 12:38 PM CST #

Post a Comment:
Comments are closed for this entry.
About

williamxue

Search

Archives
« April 2014
SunMonTueWedThuFriSat
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
Today