Bash - 在第二次出现子字符串后截断字符串

时间:2014-06-03 13:27:21

标签: bash unix

我正在编写一个bash脚本,我循环遍历文件中的行。每一行看起来像

   text ||| some more text ||| numbers

我想要做的是删除每一行的数字部分并保存新变量中的内容,以便我可以搜索它是否存在于另一个文件中。到目前为止我所拥有的是:

   while read LINEPHTABLE1
   do
           echo "before delete"
           echo "$LINEPHTABLE1"
           echo "after delete"
           echo "$LINEPHTABLE1" | sed -e 's/|||.*//g'
           if grep -q "$LINEPHTABLE1" SORTEDPHRASETABLE2; then
                #echo "found"
           else
                #echo "not found"
          fi
   done < SORTEDPHRASETABLE1

但是在第一次出现|||之后,它会丢弃所有内容。我还想将这个值保存在变量中而不是echo-ing中。有什么建议?谢谢!

1 个答案:

答案 0 :(得分:2)

您可以通过

获取包含排除号码的字符串
${LINEPHTABLE1% ||| *}

因此,或许根据您的问题,您可以:

echo "after delete"
LINEPHTABLE1=${LINEPHTABLE1% ||| *}
echo "${LINEPHTABLE1}"
if grep -q "$LINEPHTABLE1" SORTEDPHRASETABLE2; then
    ...