获取第N个域及其之后的内容?
- eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
-
- 帖子: 6548
- 注册时间: 2008-10-31 22:12
- 系统: 践兔
- 联系:
- lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: 获取第N个域及其之后的内容?
Perl 版也行啊,你贴出来嘛,要保留后边内容的空格的哦。eexpress 写了:直接perl
啥分隔符。。。都是正则分割。
- tangboyun
- 帖子: 701
- 注册时间: 2009-07-25 1:57
- 联系:
Re: 获取第N个域及其之后的内容?
[haskell]
{-# LANGUAGE OverloadedStrings #-}
module Main where
import Data.Attoparsec.Text
import Data.Attoparsec.Combinator
import Data.Char
import Control.Applicative
import qualified Data.Text.IO as TIO
import qualified Data.Text as T
import Data.Maybe
import System.Environment
myParser n = many1 $ count n (many1 (satisfy (not . isSpace)) *> many1 space) >>
fmap T.pack (manyTill anyChar endOfLine)
main :: IO ()
main = do
fmap head getArgs >>= TIO.readFile >>=
TIO.putStrLn . T.unlines . fromJust . maybeResult . flip feed "" . parse (myParser 3)
[/haskell]
{-# LANGUAGE OverloadedStrings #-}
module Main where
import Data.Attoparsec.Text
import Data.Attoparsec.Combinator
import Data.Char
import Control.Applicative
import qualified Data.Text.IO as TIO
import qualified Data.Text as T
import Data.Maybe
import System.Environment
myParser n = many1 $ count n (many1 (satisfy (not . isSpace)) *> many1 space) >>
fmap T.pack (manyTill anyChar endOfLine)
main :: IO ()
main = do
fmap head getArgs >>= TIO.readFile >>=
TIO.putStrLn . T.unlines . fromJust . maybeResult . flip feed "" . parse (myParser 3)
[/haskell]
https://github.com/tangboyun
http://tangboyun.is-programmer.com/
提问的智慧————Eric Steven Raymond
回答的智慧————Andrew Clarke
吾尝终日而思矣,不如须臾之所学也;吾尝跂而望矣,不如登高之博见也。
急急急标题什么的,最讨厌了!
急急复急急,急急何其多,我生待急急,万事急急急。
http://tangboyun.is-programmer.com/
提问的智慧————Eric Steven Raymond
回答的智慧————Andrew Clarke
吾尝终日而思矣,不如须臾之所学也;吾尝跂而望矣,不如登高之博见也。
急急急标题什么的,最讨厌了!
急急复急急,急急何其多,我生待急急,万事急急急。
-
- 帖子: 6548
- 注册时间: 2008-10-31 22:12
- 系统: 践兔
- 联系:
Re: 获取第N个域及其之后的内容?
github啊。lilydjwg 写了:问题是,自己写的程序携带不便啊。我工作时经常得从自己笔记本上拷个把脚本过去……ljj_jjl2008 写了:我其实很讨厌这种讨论:有这种讨论时间,够写200个程序的了。
代码: 全选
] ls -ld //
- lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: 获取第N个域及其之后的内容?
不想用 github 管理一堆十几行甚至几行的代码,大部分还只有自己用得着。tusooa 写了:github啊。lilydjwg 写了:问题是,自己写的程序携带不便啊。我工作时经常得从自己笔记本上拷个把脚本过去……ljj_jjl2008 写了:我其实很讨厌这种讨论:有这种讨论时间,够写200个程序的了。
而且对方不一定有 git,wget 还得让它不要校验证书。
- Methuselar
- 帖子: 122
- 注册时间: 2009-06-04 12:06
- 联系:
- eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
Re: 获取第N个域及其之后的内容?
代码: 全选
● echo 'AAA BBB CCC DDD dd DdDd'|perl -pe '/\ {8,}/;$_=$`;'
代码: 全选
● echo 'AAA BBB CCC DDD dd DdDd'|perl -pe '@_=split /\ +/;print "@_[3,4,5]\n";'
关键在于你找出特征。没特征,那就呆写。
● 鸣学
- eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
Re: 获取第N个域及其之后的内容?
● echo 'AAA BBB CCC DDD dd DdDd'|perl -pe '@_=split /\ +/;$_=join " ",@_[3,4,5];'
也可以。
也可以。
● 鸣学
- Methuselar
- 帖子: 122
- 注册时间: 2009-06-04 12:06
- 联系:
Re: 获取第N个域及其之后的内容?
你的常规写法,要是有1024列,就写[3,4,5,6,7...1024]?? perl里应该有cut -f3-那样用法的,就像lz说的py那样. 而且你也没保留空格个数。
Mea Culpa!
- lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: 获取第N个域及其之后的内容?
他的第一个倒是很不错,只是不知道性能如何。Methuselar 写了:你的常规写法,要是有1024列,就写[3,4,5,6,7...1024]?? perl里应该有cut -f3-那样用法的,就像lz说的py那样. 而且你也没保留空格个数。
- eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
Re: 获取第N个域及其之后的内容?
lilydjwg, 你应该说出实例。别模糊的说。后期是不是还要处理输出,等等。
列出几行数据,找出特征。
省得破酷胖,老说你一定要保留空格。这不傻嘛。谁后期需要处理的数据,还要固定空格。直接\t就是。就算输出到conky那种破软件,也可以\t嘛。
而且,要说明你这是不是作业,还是真正处理数据。省得别人说你这要求很傻。

另外,省得他说,要写3,4,5,,,,,,1024
列出几行数据,找出特征。
省得破酷胖,老说你一定要保留空格。这不傻嘛。谁后期需要处理的数据,还要固定空格。直接\t就是。就算输出到conky那种破软件,也可以\t嘛。
而且,要说明你这是不是作业,还是真正处理数据。省得别人说你这要求很傻。

代码: 全选
'@_=split /\ +/;$_=join " ",@_[3..5];'
代码: 全选
'@_=split /\ +/;$_=@_;$_=join " ",@_[3..$_];'
● 鸣学
- lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: 获取第N个域及其之后的内容?
我又不是学生,写什么作业 = = 也没那么宽的屏放 1024 列数据 = =
是这样子的,这次我要取 netstat -npt 的数据,其中进程名部分经常有空格。我要保留这部分的空白,虽然说一般是只有一个空格,但是谁知道呢。
特征我已经说了,和 Python split 的第二个参数一样的功能,在指定列之后的空白都算数据不算分隔符。
别管后期,Unix 风格是松耦合嘛。
- eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
- lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: 获取第N个域及其之后的内容?
酷胖是什么东西?eexpress 写了:这就好。我都猜对了。我就说了,肯定是在外面,解释某些命令的输出。
酷胖说你的是作业。
