全部博文(172)
分类: LINUX
2013-04-18 17:45:45
a.txt test1 kdfj test2 dfsdj test3 dkfjs b.txt h1 b2 c3 现在想把b.txt的内容插入到a,行与行要对应,插入后的效果: h1 test1 kdfj b2 test2 dfsdj c3 test3 dkfjs 求高手指教
补充一问,比如a.txt内容: /etc/ /test/fkjkchinafjsk/kejr fchinadjfi /fjdsi/fjfichinajsfldjdk 我要问的是怎么把china这个词的前后几个字母取出来(包含china),取第一个的china就可以,后面的几个china不能取。比如我要取china的前后各两个字符,结果应该是: jkchinafj 有人知道吗? 还有个条件是第一个china的位置是不固定的, awk "{printf("$s",substr($2,7,15) 这个虽然可以得到jkchinafj,但是不是我想要的,因为这个china的位置不一定就在第2个域,并且位置也不一定就是第7个到第15个字符 bollyone说的方法好像不满足哦,如果文件内容里包含两个以上的china,就 得不到正确的结果了,帮忙再想一下吧,还有你那个\1是什么意思呀? 补充的问题,其实我是想实现这样一个功能: a.txt内容如下: test1 jdchinasf dkkkdj chinadjfk test2 jdfjschinadfjsldfjds kdfjkdfchina test3 djfdkghchina kgjdjgfchinadjf chinadjf ... a.txt文件里有几行,每行都包含至少一个china,现在我想把每行第一个china和china前后各两个字符输出到b.txt 如下: jdchinasf jschinadf ghchina 。。。。 求高手帮忙
1:paste b.txt a.txt > new.txt 2:取china前后各两个字符:cat a.txt | sed 's/.*\(..china..\).*/\1/g' 如果有多个china的话,cat a.txt | sed 's/.*\(..china..\).*/\1/;s/\(.......\)/\1/p' 或者后面再加个你写的管道awk "{printf("$s",substr($2,7,15) \1表示\( \)直接匹配到的内容,当然这不是最好的方法,你可以再想想其他的实现方式提问者评价
很不错!