错误信息意外地包含在文件输出中

时间:2019-06-04 17:41:54

标签: unix sed output

我是UNIX的新手,所以希望人们能够为我提供帮助。

因此,我有一个文件,其中包含一个长字符串,该字符串可以跨越多行。该字符串由逗号分隔的数据组成。一个例子是:

"patchId":"29301631-EE", "patchId":"28655784-EE", "patchId":"28090523-EE", "patchId":"28090523-EE", "patchId":"28090523-EE", "patchId":"29301631-EE", "patchId":"29301631-EE", "patchId":"29301631-EE", "patchId":"28655784-EE", "patchId":"28655784-EE", "patchId":"28090523-EE",

我正在使用SED标识逗号以添加换行符,以便数据以列表形式显示。然后,我将此输出保存到名为“ temp”的文件中。我用于执行此操作的代码是:

(sed 's/\([,] \)/\n\1/g;s/\([,][0-9]\)/\n\1/g' < $patchesAvailable) > temp 2>&1

但是,我遇到的问题是,额外的信息正在添加到文件中。请看下面:

./vmCompleteScript.sh: line 22: "patchId":"29301631-EE",
"patchId":"28655784-EE",
"patchId":"28090523-EE",
"patchId":"28090523-EE",
"patchId":"28090523-EE",
"patchId":"29301631-EE",
"patchId":"29301631-EE",
"patchId":"29301631-EE",
"patchId":"28655784-EE",
"patchId":"28655784-EE",
"patchId":"28090523-EE",: File name too long

由于某种原因,'。/ vmCompleteScript.sh:第22行:'被包含在第一行中,':文件名太长'被包含在最后一行中,当我想要的只是一个包含列表的文件时的“ patchId”:“ ...”,

我不知道如何防止添加过多的信息,所以我希望有人这样做。

谢谢。

2 个答案:

答案 0 :(得分:0)

2>&1将错误消息定向到您的输出。您可能想将它们定向到/ dev / null,即2> / dev / null

现在所有这些错误都将落到天空的大桶上;)

答案 1 :(得分:0)

(我假设您显示的命令行确实是vmCompleteScript.sh的第22行。)

很显然,尽管没有明确描述,但 string 包含在变量$patchesAvailable中。通过编写command < $patchesAvailable,您可以将字符串内容指定为 file 名称,因此会出现错误消息./vmCompleteScript.sh: line 22: string: File name too long,其中string是您所说的多行名称-因此,实际上没有添加任何额外信息,这只是一条错误消息,中间带有错误的文件名。

要提供字符串内容作为命令的输入(在您的情况下为sed),您必须编写:

echo "$patchesAvailable" | sed …