到目前为止,我有以下代码允许我遍历文件并识别每个文件的第三行。但是,我想删除每三行的最后一列,但是我在编写语法时遇到了问题:
s.total <=> p->total or (*p).total
我打开使用awk,但我不确定如何在文件中的一行内联。如果可以使用整个文件上的参数来完成,那就没问题了。
此外,如果可以被3行整除,则只包含一个字段,也应删除该字段。永远不会存在空白行。
示例输入:
#!/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'
示例输出:
my dog smells
my cat bites
my fish swims
a b c
d e f
g h i
答案 0 :(得分:2)
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
答案 1 :(得分:1)
这可能适合你(GNU sed):
sed '3~3s/\s\S\+$//' file