gpt4 book ai didi

linux - 需要删除文件每三行的最后一列

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:08:27 26 4
gpt4 key购买 nike

到目前为止,我有以下代码可以循环遍历文件并识别每个文件的第三行。但是,我想删除每三行的最后一列,但我在想出语法时遇到了问题:

#!/bin/bash

counter=1
lines=$(wc -l < 'test_file')
echo $lines

while read line; do
if (( $counter % 3 == 0 )); then
#Need a good one liner here to solve the problem!
else
echo "$line is not a multiple of three."
fi
((counter = counter + 1))
done < 'test_file'

我对使用 awk 持开放态度,但我不确定如何在文件中的一行内联执行该操作。如果可以在整个文件上使用参数来完成,那很好。

此外,如果 divisible by 3 行仅包含一个字段,则也应将其删除。永远不会有已经存在的空白行。

示例输入:

my dog smells
my cat bites
my fish swims
a b c
d e f
g h i

示例输出:

my dog smells
my cat bites
my fish
a b c
d e f
g h

最佳答案

awk 更容易处理这种任务:

 awk 'NR%3==0{NF--}7' file

让我们做个小测试:

kent$  cat f
a b c d
a b c d
a b c d
a b c d
a b c d
a b c d
a b c d
a b c d
a b c d
a b c d

kent$ awk 'NR%3==0{NF--}7' f
a b c d
a b c d
a b c
a b c d
a b c d
a b c
a b c d
a b c d
a b c
a b c d

关于linux - 需要删除文件每三行的最后一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33312171/

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