gpt4 book ai didi

bash - 我如何理解我是否正在 bash 中读取文件的最后一行?

转载 作者:行者123 更新时间:2023-12-04 05:10:39 26 4
gpt4 key购买 nike

我想逐行读取文件,编辑该行并将其放入一个新文件中:

while read my_line
do
# doesn't handle the last OR
printf "'%s'\$label OR " $my_line >> delivered
done < "labels.txt"

不幸的是,通过遵循这种方法,我还在文件的最后一个元素之后添加了一个 OR。

我认为以某种方式我可以通过识别最后一行来处理这种情况:从手册页,当 $?因为 read 与 0 不同,那么我们就有了文件尾;但在这种情况下,我不能在循环中使用它来创建不同的 printf 指令。

有什么建议吗?

谢谢

最佳答案

另一个有趣的解决方案,使用 :

$ cat file.txt
aaa
bbb
ccc
$ perl -pe 's/.*/\047$&\047/; !eof && s/\n/\$label OR /g' file.txt
'aaa'$label OR 'bbb'$label OR 'ccc'

这有一个非常清晰的语法的优点,不是吗?
  • -pe代表 print默认情况下(如 sed )并假设 while (<>) {}等效
  • \047代表单引号的八进制表示 '
  • !eof代表 if the EOF is not reached
  • s///是类似 sed 的替换的基本骨架
  • 关于bash - 我如何理解我是否正在 bash 中读取文件的最后一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14969428/

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