Вам не нужно patch
для этого; это для извлечения изменений и пересылки их без неизменной части файла.
Инструмент для слияния двух версий файла merge
, но как @vonbrand
записал, Вам нужен "основной" файл от который Ваши две отличенные версии. Чтобы сделать слияние без него, использовать diff
как это:
diff -DVERSION1 file1.xml file2.xml > merged.xml
Это включит каждый набор изменений в C-стиле #ifdef
/#ifndef
команды "препроцессора", как это:
#ifdef VERSION1
<stuff added to file1.xml>
#endif
...
#ifndef VERSION1
<stuff added to file2.xml>
#endif
Если строка или регион будут отличаться между этими двумя файлами, то Вы получите "конфликт", который похож на это:
#ifndef VERSION1
<version 1>
#else /* VERSION1 */
<version 2>
#endif /* VERSION1 */
Поэтому сохраните вывод в файле и откройте его в редакторе. Поиск любых мест, где #else
подходит, и разрешите их вручную. Затем сохраните файл и прокрутите его grep -v
избавиться от остающегося #if(n)def
и #endif
строки:
grep -v '^#if' merged.xml | grep -v '^#endif' > clean.xml
В будущем сохраните исходную версию файла. merge
может дать Вам намного лучшие результаты с помощью дополнительной информации. (Но быть осторожным: merge
редактирования один из оперативных файлов, если Вы не используете -p
. Прочитайте руководство).
Вполне уверенный AIX не имеет даты GNU по умолчанию. В зависимости от Вашей версии жемчуга можно сделать:
perl -MTime::Piece -MTime::Seconds -le '
$tomorrow = Time::Piece->strptime($ARGV[0], "%Y/%m/%d") + ONE_DAY;
print $tomorrow->ymd("/")
' 2013/10/28
Так, в ksh
#!/bin/ksh
read date?"Enter the date (YYYY/MM/DD): "
tomorrow=$(
perl -MTime::Piece -MTime::Seconds -le '
$tomorrow = Time::Piece->strptime($ARGV[0], "%Y/%m/%d") + ONE_DAY;
print $tomorrow->ymd("/")
' "$date"
)
echo "Tomorrow is $tomorrow"
Выполнение этого похоже:
Enter the date (YYYY/MM/DD): 2013/12/31
Tomorrow is 2014/01/01
Протестированный на старой версии ksh и жемчуга
$ what /usr/bin/ksh
/usr/bin/ksh:
Version M-11/16/88i
SunOS 5.8 Generic 110662-24 Apr 2007
$ perl --version
This is perl, v5.10.0 built for sun4-solaris
Можно попробовать следующее:
currDate=$(date); nextDay=$(date -d "$currDate + 1 day" +"%Y-%m-%d"); echo "$nextDay"
date
руководство по AIX.
– Valentin Bajrami
29.10.2013, 10:02
printf "Enter the date (YYYY/MM/DD):" ; read user_date
desired_date=`date --date="$user_date+1 day" +"%Y/%m/%d"`
echo "Tomorrow's Date is $desired_date"
Пример:
Если у вас нет модуля [112743]Time::Local[112744], это все равно можно сделать с немного большей болью. Однако, модуль [112745]POSIX[112746] ([112747]strftime[112748]) является обязательным, так как он является "умной" частью вещи. Без него было бы трудно перейти от "28-feb" к "01-mar".[112269].
С относительно недавними версиями ksh93
:
$ printf "%(%Y/%m/%d)T\n" "2014/06/20 +1 day"
2014/06/21
Или:
$ printf "%(%Y/%m/%d)T\n" "2014/06/20 next day"
2014/06/21
$ printf "%(%Y/%m/%d)T\n" "2014/06/20 tomorrow"
2014/06/21