gpt4 book ai didi

linux - 在awk中设置一个外部变量

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:50:45 24 4
gpt4 key购买 nike

我写了一个脚本,我想在其中计算 data.txt 中的列数。我的问题是我无法在 awk 脚本中设置 x。任何帮助将不胜感激。

while read p; do
x=1;
echo $p | awk -F' ' '{x=NF}'
echo $x;
file="$x"".txt";
echo $file;
done <$1

data.txt文件:

4495125 94307025    giovy115p@live.it   94307025.094307025  12443
stazla deva1a23@gmail.com 1992/.:\1
1447585 gioao_87@hotmail.it h1st@1
saknit tomboro@seznam.cz 1233 1990

预期输出:

5.txt
3.txt
3.txt
4.txt

我的输出:

1.txt
1.txt
1.txt
1.txt

最佳答案

您只是不能Awk 中的变量集导入 shell 上下文。在您的示例中,包含 NFx 内设置的值将不会反射(reflect)在外部。

要么你需要使用命令替换($(..)) 语法来获取NF 的值并在以后使用它

x=$(echo "$p" | awk '{print NF}')

现在 x 将包含每一行中的列数。请注意,您不需要使用 -F' ',它是 awk 中的默认分隔符。

此外,您的需求完全可以在 Awk 中完成。

awk 'NF{print NF".txt"}' file

这里的 NF{..} 是为了确保 {..} 中的操作仅应用于非空行。对于每一行,我们打印长度并附加扩展名 .txt

关于linux - 在awk中设置一个外部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48056103/

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