Сообщение об ошибке случайно включается в вывод файла - PullRequest
0 голосов
/ 04 июня 2019

Я новичок в 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 голосов
/ 05 июня 2019

(я предполагаю, что отображаемая вами командная строка действительно является строкой 22 из vmCompleteScript.sh.)

Очевидно, что, хотя и не совсем ясно, строка содержится в переменной$patchesAvailable.Написав <em>command</em> < $patchesAvailable, вы указываете содержимое строки как имя файла , отсюда и сообщение об ошибке ./vmCompleteScript.sh: line 22: <em>string</em>: File name too long, где <em>string</em> - это указанное вами имя из нескольких строк - так что на самом деле нет добавляется дополнительная информация , это всего лишь одно сообщение об ошибке с ошибочным именем файла в середине.

Чтобы предоставить содержимое строки в качестве входных данных для команды (sed в вашем случае), у вас естьнаписать:

echo "$patchesAvailable" | sed …
0 голосов
/ 04 июня 2019

2> & 1 направит сообщения об ошибках на ваш выход.Вы, вероятно, захотите направить их в / dev / null, т.е. 2> / dev / null

Теперь все эти ошибки перейдут к большому ведру в небе;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...