亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区
Chinaunix
標(biāo)題:
awk或sed如何讀取帶有字符的行文件
[打印本頁]
作者:
explorerlj
時間:
2014-09-02 16:14
標(biāo)題:
awk或sed如何讀取帶有字符的行文件
各位shell高手,向大家請教個問題,望解答,謝謝。。
具體如下:一個文本文件,里面有很多數(shù)據(jù),每段的數(shù)據(jù)以字符“X"分隔,想從該文件中提取每段數(shù)據(jù),并將每段數(shù)據(jù)按100行間隔提取,存在一個文件里,不用字符"X“分隔。
一個文本文件格式為:
X
112323.2222 34.222223 1001
1124344444 222222222 3000
222222222 33333333 6666
....... ..........
....... ...........
X
222222222 2222222 999
33333333 4444444 2000
555555 555555 4000
........... .........
......... ..........
X
4444444 5555555 2000
232323 45454545 3000
6767676 3232323 6000
........ .......... ......
作者:
super皮波
時間:
2014-09-02 16:21
沒太看明白你說的,你最好有個列子,想達(dá)到什么樣的效果
作者:
explorerlj
時間:
2014-09-02 16:48
程序的思路是這樣,按每行讀取數(shù)據(jù),當(dāng)遇到字符”X"時,讀取下一行數(shù)據(jù)回車,然后再間隔100行讀取一行數(shù)據(jù)回車。。。。。,當(dāng)再次遇到字符“X"時,與之前一樣,讀取下一行數(shù)據(jù)回車,然后再間隔100行讀取一行數(shù)據(jù)回車。
作者:
dn833
時間:
2014-09-02 16:51
[root@FILE_SHARE tmp]# cat b
X
1 112323.2222 34.222223 1001
2 1124344444 222222222 3000
3 222222222 33333333 6666
4 112323.2222 34.222223 1001
5 1124344444 222222222 3000
6 222222222 33333333 6666
7 112323.2222 34.222223 1001
8 1124344444 222222222 3000
9 222222222 33333333 6666
10 112323.2222 34.222223 1001
X
1 1124344444 222222222 3000
2 222222222 33333333 6666
3 112323.2222 34.222223 1001
4 1124344444 222222222 3000
5 222222222 33333333 6666
6 12323.2222 34.222223 1001
7 1124344444 222222222 3000
8 222222222 33333333 6666
9 112323.2222 34.222223 1001
10 1124344444 222222222 3000
X
1 222222222 33333333 6666
2 112323.2222 34.222223 1001
3 1124344444 222222222 3000
4 222222222 33333333 6666
5 112323.2222 34.222223 1001
6 1124344444 222222222 3000
7 222222222 33333333 6666
8 112323.2222 34.222223 1001
9 1124344444 222222222 3000
10 222222222 33333333 6666
[root@FILE_SHARE tmp]# awk 'BEGIN{RS="X";FS="\n"}NR>1{$1=$1;for(i=2;i<=NF;i=i+3)print $i}' b
1 112323.2222 34.222223 1001
4 112323.2222 34.222223 1001
7 112323.2222 34.222223 1001
10 112323.2222 34.222223 1001
1 1124344444 222222222 3000
4 1124344444 222222222 3000
7 1124344444 222222222 3000
10 1124344444 222222222 3000
1 222222222 33333333 6666
4 222222222 33333333 6666
7 222222222 33333333 6666
10 222222222 33333333 6666
復(fù)制代碼
如果符合lz的想法把i=i+3改成i=i+100就ok了
作者:
explorerlj
時間:
2014-09-02 17:01
非常感謝!太牛了
回復(fù)
4#
dn833
作者:
super皮波
時間:
2014-09-02 17:04
awk 'BEGIN{i=0;}{if($0 == "X") {line = NR + 1 ; next} if(NR == line ) {a[i] = $0; line+=100;i+=1;next}} END{for (i in a) print a[i]}' test
你試試這個 挺笨的方法
作者:
explorerlj
時間:
2014-09-02 17:09
如果保留每段數(shù)據(jù)的首行和尾行,中間間隔100行,好不好弄,謝謝!
一個文本文件格式為:
X
112323.2222 34.222223 1001 (提取該段數(shù)據(jù)首行)
1124344444 222222222 3000
222222222 33333333 6666 (中間間隔100行)
....... ..........
....... ...........
5555555 888888888 8888 (提取該數(shù)據(jù)最后一行)
X
222222222 2222222 999 (提取該段數(shù)據(jù)首行)
33333333 4444444 2000 (中間間隔100行)
555555 555555 4000
........... .........
......... ..........
888888 3433333 7777 (提取該數(shù)據(jù)最后一行)
作者:
super皮波
時間:
2014-09-02 17:11
回復(fù)
7#
explorerlj
你看看6樓我說的 是不是滿足你的需求
作者:
explorerlj
時間:
2014-09-02 17:19
結(jié)果與dn833不一樣,好像循環(huán)有問題,不過還是要感謝你,謝謝!剛開始學(xué),很多不太懂。
回復(fù)
6#
super皮波
作者:
super皮波
時間:
2014-09-02 17:21
回復(fù)
9#
explorerlj
我這有一點(diǎn)限制,要求X前不能有空格,我自己測試是沒問題的
歡迎光臨 Chinaunix (http://www.72891.cn/)
Powered by Discuz! X3.2