[英]Cannot print in awk command in bash script
我正在尝试从文件中读取值并将特定项目打印到稍后将使用的变量中。
cat /dir1/file1 | while read blmbline2
do
BLMBFILE2=`print $blmbline2 | awk '{$1=""; print $0}'`
echo $BLMBFILE2
done
当我在命令行中运行相同的代码时,它会按预期运行,但是,当我在名为 testme.sh 的 bash 脚本中运行它时,会出现以下错误:
./testme.sh:第 3 行:打印:找不到命令
如果我在命令提示符下自行运行 print,我不会收到错误消息(只是一个空行)。
如果我运行“bash”然后在命令提示符下打印,我得到命令未找到。
我无法弄清楚我做错了什么。 有人可以建议吗?
更新:我看到其他一些帖子说使用 echo 或 printf? 在使用 bash 中的其中一个时,我需要注意区别吗?
在 shell 脚本中将print
更改为echo
。 使用printf
您可以格式化数据,使用echo
它将打印文件的整行。 此外,创建一个数组,以便您可以存储多个项目:
BLMBFILE2=()
while IFS= read -r -d $'\0'
do
BLMBFILE2+=(`echo $REPLY | awk '{$1=""; print $0}'`)
echo $BLMBFILE2
done < <(cat /dir1/file1)
echo "Items found:"
for value in "${BLMBFILE2[@]}"
do
echo $value
done
既然awk
可以读取文件,你或许可以把cat | while read
干掉 | 天天要闻 cat | while read
并仅使用awk
。 使用包含以下内容的示例文件:
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
声明您的 bash 数组变量并使用 awk 中的awk
填充:
arr=() ; arr=($(awk '{$1=""; print $0}' /dir1/file1))
使用以下内容显示数组大小和内容:
printf "array length: %d\narray contents: %s\n" "${#arr[@]}" "${arr[*]}"
Output:
array length: 30
array contents: 2 3 4 5 6 2 3 4 5 6 2 3 4 5 6 2 3 4 5 6 2 3 4 5 6 2 3 4 5 6
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.