亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標題: sed和awk [打印本頁]

作者: baby_神    時間: 2016-01-14 21:52
標題: sed和awk
本帖最后由 baby_神 于 2016-01-14 21:52 編輯

1、打印文件奇數(shù)行
sed -n 'p;n'
sed 'n;d'
sed -n '$!N;P'
sed -n '1~2p'
awk 'i=!i'
awk 'NR%2'
2、打印文件偶數(shù)行
sed -n 'n;p'
sed -n '0~2p'
awk '!(i=!i)'
awk '!(NR%2)'
3、打印文件倒數(shù)第二行
sed -n 'N;$P;D'
awk '{a[NR]=$0}END{print a[NR-1]}'
awk '{a=b;b=$0}END{print a}'
4、文件順序倒過來(模擬tac)
sed '1!G;h;$!d'
awk '{a[NR]=$0}END{for(i=NR;i>=1;i--)print a}'
5、文件奇偶行換位置
sed -n 'h;$!{n;G};p'
awk 'getline i{print i}1'
awk 'i=NR%2{x=$0;next}{print $0 RS x}END{if(i)print x}'
6、把列變?yōu)樾?br /> sed ':t;N;s/\n/ /g;tt'
awk '{printf("%s ",$0)}'

大家還有其他好玩的么,共享下
作者: jason680    時間: 2016-01-14 22:29
回復 1# baby_神

3、打印文件倒數(shù)第二行
awk '{a[NR%2]=$0}END{print a[--NR%2]}'
倒數(shù)第n行
awk '{a[NR%n]=$0}END{print a[(NR-n+1)%n]}'
   
作者: baby_神    時間: 2016-01-14 22:52
你這個思路很特別,有點理解不了,能稍微點一下么?
回復 2# jason680


   
作者: jason680    時間: 2016-01-14 23:06
本帖最后由 jason680 于 2016-01-14 23:08 編輯

回復 3# baby_神

倒數(shù)第n行
數(shù)組 [ ] [ ] .... [ ] [ ]  n個

ex: NR=10行, n=4(倒數(shù)第4行)

END時 NR%4=2
a[1], a[2], a[3], a[4]
NR%4 =2
a[倒數(shù)第2行], a[倒數(shù)第1行], a[倒數(shù)第4行], a[倒數(shù)第3行]
a[第9行],       a[第10行],     a[第7行],       a[第8行]

$ seq 10 | awk -vn=4 '{a[NR%n]=$0}END{print a[(NR+1)%n]}'
7

     

作者: baby_神    時間: 2016-01-14 23:22
明白了,學習了,大贊
回復 4# jason680


   
作者: yjh777    時間: 2016-01-15 10:03
ed 方法:
倒數(shù)第N行:
    echo -e "-$((N-1))\nq\n" |ed -s <(seq 10)
作者: yjh777    時間: 2016-01-15 10:06
最后N行

[yjh@ss ~]$ N=4
[yjh@ss ~]$ echo -e "-$((N-1)),$ p\nq\n" |ed -s <(seq 10)
7
8
9
10

作者: baby_神    時間: 2017-04-29 00:05
本帖最后由 baby_神 于 2017-05-10 16:20 編輯

awk 打印匹配行的前幾行;模擬grep -B
seq 7 | awk '/5/{b=NR}{a[NR]=$0}END{for(i=3;i--;i>0)print a[b-i]}'
seq 7 | awk '{a[NR]=$0}/5/{b=NR;exit}END{for(i=3;i--;i>0)print a[b-i]}'

作者: baby_神    時間: 2017-04-29 00:31
sed打印匹配行的前幾行怎么寫


作者: 1cpuer    時間: 2017-04-29 05:39
回復 7# yjh777

-S;N;p;q; ????
help echo
echo --help
沒有看到S;N;p;q 參數(shù)

作者: baby_神    時間: 2017-05-10 16:13
本帖最后由 baby_神 于 2017-05-10 16:14 編輯

sed 版打印匹配行的前幾行
seq 10 | sed -rn '/8/{x;G;p};H;g;s@(.*\n)*((.*\n){1}.*$)@\2@;h'

seq 10 | sed -n '/\n/{x;bb};1h;1!H;4,${x;D};:b;/8/{g;p}'

seq 10 | sed -n '1h;1!H;4,${x;s/[^\n]\+\n//;x};/8/{g;p}'
作者: baby_神    時間: 2017-06-06 22:08
本帖最后由 baby_神 于 2017-06-06 22:11 編輯

1、逆時針矩陣
  1. awk -vN=1000 'BEGIN{n = (int(sqrt(N) / 2) - sqrt(N) / 2) ? (int(sqrt(N) / 2) + 1) : (int(sqrt(N) / 2));for(i = 1;i <= 2 * n;i++){for(j = 1;j <= 2 * n;j++){if(j + i - 1 < 2 * n){r = (j >= i) ? (n - i + 1) : (n - j + 1);v = (j >= i) ? (4 * (n - i)^2 - j - i + 2 * n + 1) : (4 * (n - j)^2 - 3 * j + i + 2 * n + 1);} else {r = (j <= i) ? (i - n) : (j - n);v = (j <= i) ? (4 * (i - n - 1)^2 + j + 5 * i - 6 * n - 3) : (4 * (j - n - 1)^2 + 7 * j - i - 6 * n - 3)}srand(r);printf("\033["(30 + int(1 + 9 * rand()))"m%4s\033[m", (v > N) ? "" : v);}print ""}}'
復制代碼
2、
  1. echo 15|awk '{x=8;for(i=1;i<$0;i++){for(j=1;j<=3*($0-i)-(x>0?x:0);j++)printf" ";for(k=i;k>=1;k--)printf"%d ",k;for(l=2;l<=i;l++)printf"%d ",l;printf"\n";x--};for(i=1;i<=$0;i++){for(j=1;j<=(i<=$0-10+1?3*(i-1):3*(i-1)+2-(i-$0%10-10*int(($0-10)/10)));j++)printf" ";for(k=$0-i+1;k>=1;k--)printf"%d ",k;for(l=2;l<=$0-i+1;l++)printf"%d ",l;printf"\n"}}
復制代碼



作者: sditmaner    時間: 2017-06-07 11:28
sed打印匹配行的前幾行怎么寫
作者: baby_神    時間: 2018-09-18 15:01
sed 打印文件內(nèi)容并清空文件
  1. [root@test-01 ~]# seq 5 > b              
  2. [root@test-01 ~]# sed '${p;s/.*/:>b/e;d}' b
  3. 1
  4. 2
  5. 3
  6. 4
  7. 5
  8. [root@test-01 ~]# cat b
  9. [root@test-01 ~]#
  10. [root@test-01 ~]#
復制代碼

作者: baby_神    時間: 2019-12-30 10:00
  1. seq 9 | sed -nr 'N;s/\n(.*)/ \1\n\1/;P;D'
  2. seq 9 | awk 'NR>1{print a,$0}{a=$0}'
  3. 1 2
  4. 2 3
  5. 3 4
  6. 4 5
  7. 5 6
  8. 6 7
  9. 7 8
  10. 8 9
復制代碼





歡迎光臨 Chinaunix (http://72891.cn/) Powered by Discuz! X3.2