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

转自: http://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 ’12’   |  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 ’12’   |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
——————————————————————————-

 

2 thoughts on “Shell Tips – (sed/awk equivalent Unix command ) 转:sed/awk与unix命令等价代码

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s