Gson легко учиться и реализовывать, что нам нужно знать, следуют двум методам
`
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import com.google.gson.Gson;
public class GsonExample {
public static void main(String[] args) {
Gson gson = new Gson();
try {
BufferedReader br = new BufferedReader(
new FileReader("c:\\file.json"));
//convert the json string back to object
DataObject obj = gson.fromJson(br, DataObject.class);
System.out.println(obj);
} catch (IOException e) {
e.printStackTrace();
}
}
}
`
str="Initial Value = 168"
newstr="${str##* }"
echo "$newstr" # 168
соответствие шаблонов - путь.
Прежде всего, всегда указывайте свои переменные.
#!/bin/bash
str="Initial Value = 168"
echo "New Value=$(echo "$str" | cut -d '=' -f2);"
Для меня это приводит к выводу:
New Value= 168;
Если вы получаете возврат каретки между цифры и точку с запятой, то что-то может быть не так с вашим echo
, или, возможно, ваши входные данные не так, как вы думаете. Возможно, вы редактируете свой сценарий на компьютере под Windows и копируете его, а ваше назначение переменной получает строки в стиле DOS. Из информации, которую вы предоставили в своем вопросе, я не могу сказать.
Во всяком случае, я бы так не сделал. Я хотел бы использовать printf
.
#!/bin/bash
str="Initial Value = 168"
value=${str##*=}
printf "New Value=%d;\n" "$value"
Вывод printf
предсказуем, и он легко удаляет ган, как пустое, когда вы этого не хотите.
Обратите внимание на замену вашего cut
. Функциональность встроенных модулей bash описана на странице пользователя Bash в разделе «Расширение параметров», если вы хотите ее просмотреть. Замещенная мной замена не является точно той же функциональностью, что и у вас в вашем вопросе, но функционально эквивалентна для данных примера, которые вы предоставили.
Попробуйте следующее:
#! /bin/bash
str="Initial Value = 168"
awk '{print $2"="$4}' <<< $str > test.txt
Выход:
cat test.txt
Value=168
У меня есть комментарий, говорящий, что он не адресует ^ M, я на самом деле:
echo -e 'Initial Value = 168 \r' | cat -A
Initial Value = 168 ^M$
После awk
:
echo -e 'Initial Value = 168 \r' | awk '{print $2"="$4}' | cat -A
Value=168$