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

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問板塊 發(fā)新帖
查看: 2992 | 回復(fù): 6
打印 上一主題 下一主題

[文本處理] 請(qǐng)問awk如何在不含有@的行指定位置加上chr [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2013-12-21 16:30 |只看該作者 |倒序?yàn)g覽
本帖最后由 chenjiali1 于 2013-12-21 16:31 編輯

文本如下:
@SQ     SN:chr15        LN:102531392
15        LN:102531392
15        LN:102531392
@SQ     SN:chr12        LN:133851895
@SQ     SN:chr13        LN:115169878

我想輸出這樣的結(jié)果
@SQ     SN:chr15        LN:102531392
chr15        LN:102531392
chr15        LN:102531392
@SQ     SN:chr12        LN:133851895
@SQ     SN:chr13        LN:115169878

即含有@或者其它指定的特殊字符,如&,%等的行直接輸出,不含有的在行首加上chr,請(qǐng)問awk和sed分別如何實(shí)現(xiàn),謝謝大家!
另外,如果想在不含有@字符的第二列前加入chr,請(qǐng)問如何實(shí)現(xiàn)。
@SQ     SN:chr15        LN:102531392
15        chrLN:102531392
15        chrLN:102531392
@SQ     SN:chr12        LN:133851895
@SQ     SN:chr13        LN:115169878
這里我只截取了少數(shù)行,唯一分隔的標(biāo)準(zhǔn)就是含不含@,而且@也不一定在行首。要加chr的列如上所述不一定是第一列即行首。

論壇徽章:
32
處女座
日期:2013-11-20 23:41:20雙子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00處女座
日期:2014-07-22 17:30:47獅子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥豬
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58處女座
日期:2014-12-02 09:17:52程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-06-16 22:20:002015亞冠之塔什干火車頭
日期:2015-06-20 23:28:22
2 [報(bào)告]
發(fā)表于 2013-12-21 16:49 |只看該作者
第一個(gè)需求:
  1. [root@localhost ~]# sed '/[@&%]/b;s/^/chr/' i
  2. @SQ     SN:chr15        LN:102531392
  3. chr15        LN:102531392
  4. chr15        LN:102531392
  5. @SQ     SN:chr12        LN:133851895
  6. @SQ     SN:chr13        LN:115169878
  7. [root@localhost ~]#
復(fù)制代碼
  1. [root@localhost ~]# awk '!/[@&%]/{$0="chr"$0}1' i
  2. @SQ     SN:chr15        LN:102531392
  3. chr15        LN:102531392
  4. chr15        LN:102531392
  5. @SQ     SN:chr12        LN:133851895
  6. @SQ     SN:chr13        LN:115169878
  7. [root@localhost ~]#
復(fù)制代碼
第二個(gè)需求:
  1. [root@localhost ~]# awk -vOFS='\t' '!/[@&%]/{$2="chr"$2}1' i
  2. @SQ     SN:chr15        LN:102531392
  3. 15      chrLN:102531392
  4. 15      chrLN:102531392
  5. @SQ     SN:chr12        LN:133851895
  6. @SQ     SN:chr13        LN:115169878
  7. [root@localhost ~]#
復(fù)制代碼
如果想實(shí)現(xiàn)指定任意列插入chr,可以用變量控制:
  1. [root@localhost ~]# awk -vt=1 -vOFS='\t' '!/[@&%]/{$t="chr"$t}1' i
  2. @SQ     SN:chr15        LN:102531392
  3. chr15   LN:102531392
  4. chr15   LN:102531392
  5. @SQ     SN:chr12        LN:133851895
  6. @SQ     SN:chr13        LN:115169878
  7. [root@localhost ~]# awk -vt=2 -vOFS='\t' '!/[@&%]/{$t="chr"$t}1' i
  8. @SQ     SN:chr15        LN:102531392
  9. 15      chrLN:102531392
  10. 15      chrLN:102531392
  11. @SQ     SN:chr12        LN:133851895
  12. @SQ     SN:chr13        LN:115169878
  13. [root@localhost ~]#
復(fù)制代碼

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2013-12-21 16:59 |只看該作者
回復(fù) 2# yestreenstars


    awk的看懂了,sed的能解釋下嗎?謝謝啦。對(duì)sed非常不熟。

論壇徽章:
32
處女座
日期:2013-11-20 23:41:20雙子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00處女座
日期:2014-07-22 17:30:47獅子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥豬
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58處女座
日期:2014-12-02 09:17:52程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-06-16 22:20:002015亞冠之塔什干火車頭
日期:2015-06-20 23:28:22
4 [報(bào)告]
發(fā)表于 2013-12-21 17:06 |只看該作者
回復(fù) 3# chenjiali1
  1. sed '
  2. /[@&%]/b; #匹配到@、&或%就跳轉(zhuǎn)到腳本的尾部
  3. s/^/chr/ #將行首替換為chr
  4. '
復(fù)制代碼
       b label
              Branch to label; if label is omitted, branch to end of script.

整個(gè)腳本的意思就是當(dāng)匹配到@、&或%時(shí)就不執(zhí)行任何操作,直接打印,否則就替換行首為chr,然后打印。

   

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2013-12-21 17:10 |只看該作者
明白了,剛查了下資料,感覺sed比awk難懂多了,這種判斷語(yǔ)句連個(gè)if都沒有

論壇徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
6 [報(bào)告]
發(fā)表于 2013-12-23 09:41 |只看該作者
回復(fù) 5# chenjiali1


星辰大大 用的就是if語(yǔ)句,sed 里面的 b函數(shù)和 t函數(shù)就是  if語(yǔ)句,需要好好理解

針對(duì)第一種需求 還可以這樣
  1. [root@everIover ~]# sed '/^[^@]/s/^/chr/' ii
  2. @SQ     SN:chr15        LN:102531392
  3. chr15        LN:102531392
  4. chr15        LN:102531392
  5. @SQ     SN:chr12        LN:133851895
  6. @SQ     SN:chr13        LN:115169878
  7. [root@everIover ~]# cat ii
  8. @SQ     SN:chr15        LN:102531392
  9. 15        LN:102531392
  10. 15        LN:102531392
  11. @SQ     SN:chr12        LN:133851895
  12. @SQ     SN:chr13        LN:115169878
復(fù)制代碼

論壇徽章:
5
未羊
日期:2014-08-04 16:15:21天秤座
日期:2014-08-13 13:52:372015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:112015亞冠之浦和紅鉆
日期:2015-06-29 15:30:48
7 [報(bào)告]
發(fā)表于 2013-12-23 10:38 |只看該作者
  1. awk -F @ '(NF>1)?a=$0:a="chr"$0{print a}'

  2. awk -F @ '(NF>1)?a=$0:a=gensub(/([^ ]+)$/,"chr&",$0){print a}'
復(fù)制代碼
  1. sed '/@/!s/^/chr/'

  2. sed '/@/!s/\([^ ]\+\)$/chr\1/'
復(fù)制代碼
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP