在 linux 中使用单词作为 cut 命令的定界符而不使用 awk

Use a word as a delimiter for cut command in linux without using awk

我正在尝试获取由特定字符串分隔的文件中一行的第二段,它通常会像 awk -F ':: My Delimiter ::' '{print }' 那样工作,但如果我尝试打印 </code>它将打印传递给 <code>awk 命令所在函数的第二个参数。有没有另一种方法可以用定界符分割一行并打印结果的特定部分?

这正是我遇到问题的行:

for transaction in $(cat )
do
    echo "$transaction" | awk -F ':: My Delimiter ::' '{print }' >> testLog.data.out
done

注意:分隔符将与描述的完全一致。 :: 我的分隔符 ::

我认为您应该真正使用 awk 而不是使用 cut - 您的示例 awk -F ':: My Delimiter ::' '{print }' 应该可以工作。如果您打印了传递给包含该 awk 的函数的第二个参数,那么这意味着 </code> 不在单引号内 - 也许您使用了双引号?这行不通(注意双引号):</p> <pre><code>awk -F ':: My Delimiter ::' "{print }"

但这会(你的例子):

awk -F ':: My Delimiter ::' '{print }'

您可以使用此代码:

echo ':: My Delimiter ::' | awk '{split([=10=],v,"My Delimiter"); print v[2]}' 


>>> echo 'ThisIsINeed0 My Delimiter ThisIsINeed1' | awk '{split([=10=],v," My Delimiter "); print v[1]}'
ThisIsINeed0
>>> echo 'ThisIsINeed0 My Delimiter ThisIsINeed1' | awk '{split([=10=],v," My Delimiter "); print v[2]}' 
ThisIsINeed1


>>> echo 'This Is I Need 0 My Delimiter This Is I Need 1' | awk '{split([=10=],v," My Delimiter "); print v[2]}' 
This Is I Need 1
>>> echo 'This Is I Need 0 My Delimiter This Is I Need 1' | awk '{split([=10=],v," My Delimiter "); print v[1]}' 
This Is I Need 0