gpt4 book ai didi

linux - bash 脚本中 Grep 命令的问题

转载 作者:太空宇宙 更新时间:2023-11-04 11:41:31 26 4
gpt4 key购买 nike

我在 bash 脚本中使用 grep 时遇到了一些相当不寻常的问题。下面是我正在使用的展示行为的 bash 脚本代码示例:

UNIQ_SCAN_INIT_POINT=1
cat "$FILE_BASENAME_LIST" | uniq -d >> $UNIQ_LIST
sed '/^$/d' $UNIQ_LIST >> $UNIQ_LIST_FINAL
UNIQ_LINE_COUNT=`wc -l $UNIQ_LIST_FINAL | cut -d \ -f 1`
while [ -n "`cat $UNIQ_LIST_FINAL | sed "$UNIQ_SCAN_INIT_POINT"'q;d'`" ]; do
CURRENT_LINE=`cat $UNIQ_LIST_FINAL | sed "$UNIQ_SCAN_INIT_POINT"'q;d'`
CURRENT_DUPECHK_FILE=$FILE_DUPEMATCH-$CURRENT_LINE
grep $CURRENT_LINE $FILE_LOCTN_LIST >> $CURRENT_DUPECHK_FILE
MATCH=`grep -c $CURRENT_LINE $FILE_BASENAME_LIST`
CMD_ECHO="$CURRENT_LINE matched $MATCH times," cmd_line_echo
echo "$CURRENT_DUPECHK_FILE" >> $FILE_DUPEMATCH_FILELIST
let UNIQ_SCAN_INIT_POINT=UNIQ_SCAN_INIT_POINT+1
done

在很多情况下,当在文件位置列表中搜索当前行时,它没有向当前 dupechk 文件输出任何输出,即使文件位置列表中的当前行肯定有匹配项(我运行了命令在终端没有问题)。

我在互联网上四处搜寻,看看是否有其他人有过类似的行为,到目前为止,我所发现的只是它与 Bash 中 grep 命令之前运行的其他命令的缓冲和非缓冲输出有关脚本....

但是似乎没有人找到解决方案,所以基本上我是在问你们是否遇到过这个问题,以及这个问题的任何想法/提示/解决方案...

问候

保罗

最佳答案

“问题”是标准 I/O 库。当它正在写入终端时它是无缓冲的,但如果它正在写入管道,则它会设置缓冲。

尝试改变

CURRENT_LINE=`cat $UNIQ_LIST_FINAL | sed "$UNIQ_SCAN_INIT_POINT"'q;d'`

CURRENT LINE=`sed "$UNIQ_SCAN_INIT_POINT"'q;d' $UNIQ_LIST_FINAL`

关于linux - bash 脚本中 Grep 命令的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2327444/

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