gpt4 book ai didi

bash - 如何防止 awk 将换行符附加到匹配项

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

我正在编写一个 bash 脚本来解析制表符分隔文本文件中的一些字段,并将它们附加到文件本身的文件名中。我可以使用 awk 很好地解析这些字段,但它们附加了一个换行符。我想从结果中删除那些换行符,或者理想情况下阻止 awk 首先附加它们。现在仅从存储的字符串中回显的示例代码:

#!/bin/bash
echo "Usage: sh extract.sh filename.txt (or *.txt)"

for filenam in "$@"
do
timestring=$(awk 'BEGIN{ FS="\t"; RS="\n"; ORS="_"; OFS="_"}
/Conditions/ {printf $2}
/Date/ {printf $2}
/Time/ {printf $2}
END {}' $filenam)
echo $timestring

done

目前,每次找到匹配项时,它都会覆盖之前的任何匹配项,因为\n 附加到字符串的末尾。我该如何防止呢? (这样我的 conditions_date_time 就是一个字符串,没有任何换行符)。

抱歉,如果这看起来像是一个简单的问题,但我已经用谷歌搜索了几个小时并尝试了各种方法,但我被难住了。谢谢!

最佳答案

在您的脚本中,使用 print 而不是 printf,例如打印 $2

至于覆盖,如果您正在处理的文本文件具有 \r\n 行结尾,而不是 \n,则可能会发生这种情况。如果是这种情况,请将输入记录分隔符设置为 \r\n,例如RS="\r\n"

关于bash - 如何防止 awk 将换行符附加到匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7370364/

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