如何打印所有 $Organs 单词(从第三个字段开始),每个 Organ 之间留一个空格?我的问题是每个 $Organ 参数都有不同的 Organs 编号,所以我无法猜测最后一个字段编号。我需要 awk 语法,打印从第三个字段到最后一个字段的 $Organs 参数,单词之间留一个空格。
Organs="a bb c ddd ee ff rr ff"
Organs="1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 20 21 22"
Organs="I need to lern awk I hope I will do the best"
Organs="I need help"
echo $Organs| awk '{print $3" "$4" "$5" "$6 .......?}'
答案1
% echo $Organs | awk '{ \
for (i = 3; i <= NF; i++) { \
printf("%s ", $i); \
} \
printf("\n") }'
答案2
尝试这样的操作:
for (i = 3; i <= NF; i++)
printf("%s ", $i);
print ""
NF 为您提供行中的字段数。请查看此常见问题解答:
同意更适合 stackoverflow.com。
答案3
awk '{
$1=$2="" # suppress first two fields
out=substr($0, 3) # suppress the two leading occurrences of OFS that remain
print out
}'
这假设 OFS 计算结果为单个空格,这是其默认值。
此解决方案可能比其他解决方案快一点。但可以想象,它也可能更慢:这取决于重新分配字段和重新解析$0
(如此解决方案一样)还是实现 awk 循环(如其他解决方案一样)更快。但无论哪种方式,您都不会注意到速度差异。