【问题标题】:Get first word of every line with AWK or SED?使用 AWK 或 SED 获取每行的第一个单词?
【发布时间】:2017-12-06 05:57:06
【问题描述】:

我有一个这样的文本文件:

aaaa bbbb cccc
dddd eeee ffff
gggg hhhh iiii
...
..
.

我怎样才能创建一个文本文件,每行的第一列都是awksed 这样的?

aaaa
dddd
gggg
...
..
.

我看到过类似的主题,但我无法解决我的问题!

【问题讨论】:

标签: awk sed split


【解决方案1】:

如果您的输入是

aaaa bbbb cccc dddd eeee ffff gggg hhhh iii

而你想要的是:

啊啊啊 dddd 呸呸呸

那么你可以使用任何一个:

awk NF=1 输入文件 sed 's/ .*//' 输入文件 剪切 -d' ' -f1 输入文件

【讨论】:

    【解决方案2】:

    使用awk:通过将字段数设置为1:

    awk '{NF=1}1' inputfile   
    

    使用grep 并环顾四周:

    grep -oP '^.[^ ]+' inputfile
    

    使用sed 反向引用:

    sed -r 's/(^.[^ ]+).*/\1/' inputfile
    

    【讨论】:

    • 为什么是“.”在 sed 和 grep 模式的开头?
    • @mischa ,这里的点表示任何字符,所以^。表示行首后跟任意字符。
    • 是的,我知道“什么”是什么意思;我很困惑“为什么”你有它。对于示例输入,它是多余的。对于允许一个字符的第一个字段的输入,它会失败。我相信你有一个原因......但是什么?
    猜你喜欢
    • 1970-01-01
    • 2011-12-13
    • 2013-10-07
    • 2021-06-20
    • 2016-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多