如何使用 cut 命令删除行空间

如何使用 cut 命令删除行空间

由此:

1

2

3

4

5

6

结果应该是这样的:

1
2
3
4
5
6

答案1

这只会删除空白行。如果您正在操作的只是输出,则可以删除“文件”:

sed '/^[[:space:]]*$/d' file

它作用于所有以空格开头、包含空格和结尾的行。

如果您想直接编辑该文件而不是将其发送到标准输出:

sed -i '/^[[:space:]]*$/d' file

输出

1
2
3
4
5
6

答案2

cut命令不是满足此要求的正确工具,但是我们可以构建一个命令来获得所需的结果(或者你应该使用的工具):

<infile cut -d$'\n' -f1$(printf '%s' ,{3..18..2})

{min..max..step}bash 大括号扩展产生,3,5,7,9,11,...输出(生成奇数字段数字以剪切-f选项-f1,3,5,7,11,...);选择最大限度如果输入文件的行数未知,则使用一个很大的数字。

这只选择奇数行,因此它不会跳过您认为的空行。

答案3

cut主要是提取特定的工具来自数据(与相反paste)。因此,它可能不是删除/提取文本行的正确工具。

GNUsed可用于删除从第 2 行开始的第二行:

$ sed '2~2d' file
1
2
3
4
5
6

...或者从第 1 行开始每隔一行打印一次(忽略其他行):

$ sed -n '1~2p' file
1
2
3
4
5
6

地址x~y范围指的是 line x,然后是y之后的每一行(这是sed对 standard 的 GNU 扩展sed)。

答案4

awk NF

是你所需要的全部。 NF 是字段数,由空格界定。零是一个假布尔值,因此不会打印这些行。

相关内容