我是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”:“ ...”,
我不知道如何防止添加过多的信息,所以我希望有人这样做。
谢谢。
答案 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 …