gpt4 book ai didi

linux - 打印不包含句号的行 linux

转载 作者:太空宇宙 更新时间:2023-11-04 10:13:29 25 4
gpt4 key购买 nike

我有一个包含数千行的文件。我想打印不包含句点的行。

awk '{print$2}' file.txt | head

我用它来打印我感兴趣的列,第 2 列(该文件只有两列)。我已经移除了头部然后做了

awk '{print$2}' file.txt | grep -v "." | head

但我只得到空行而不是任何预期的实际值,我认为它包括行之间的空格但我不确定。

是否有替代命令?

按照吉姆的建议,我做了-

awk '{print$2}' file.txt | grep -v "\." | head

但是行数比以前多了,这是预期的吗?另外,我的输出是一个数字列表,但它们之间有空格(垂直),这正常吗?

下面的 file.txt 示例-

120.4 3
270.3 7.9
400.8 3.9

200.2 4
100.2 8.7
300.2 3.4

102.3 6
49.0 2.3
38.0 1.2

因此预期(和正确)的输出将是 3 行,因为第 2 列中有 3 个值没有句点:

$ awk '{print$2}' file.txt | grep -v "\." | head
3
4
6

但是,当运行上面的代码时,我得到的是 5,我认为这也在计算行之间的空格:

$ awk '{print$2}' file.txt | grep -v "\." | head
3

4

6

最佳答案

如果您已经在使用 awk,则很少需要使用 grep

这将在第二列不包含点的每一行上打印第二列:

awk '$2 !~ /\./ {print $2}'

但是您还想跳过空行,或者第二列不为空的行。所以也只测试一下:

awk '$2 != "" && $2 !~ /\./ {print $2}'

(一个更有趣的版本是 awk '$2 ~/./&& $2 !~/\./{print $2}' )


如您所说,grep -v "." 只给您空行。这是因为点的意思是“任何字符”,而使用 -v 时,唯一打印的行是那些不包含任何字符的行。

关于linux - 打印不包含句号的行 linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47540003/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com