gpt4 book ai didi

bash - awk 在读取行中的行为

转载 作者:行者123 更新时间:2023-11-29 09:20:33 25 4
gpt4 key购买 nike

 $ cat file
11 asasaw121
12 saasks122
13 sasjaks22

$ cat no
while read line
do
var=$(awk '{print $1}' $line)
echo $var
done<file

$ cat yes
while read line
do
var=$(echo $line | awk '{print $1}')
echo $var
done<file

$ sh no
awk: can't open file 11
source line number 1

awk: can't open file 12
source line number 1

awk: can't open file 13
source line number 1

$ sh yes
11
12
13

为什么第一个不起作用? awk 希望在 $1 中找到什么?我认为理解这一点将帮助我避免许多脚本问题。

最佳答案

awk 总是需要一个文件名作为输入

在下文中,$line 是字符串而不是文件。

 var=$(awk '{print $1}' $line)

你可以说(注意变量周围的双引号)

 var=$(awk '{print $1}' <<<"$line")

关于bash - awk 在读取行中的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20104364/

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