Не могли бы вы попробовать следующее.
echo "xxx 03/11/2018" |
awk '
match($0,/[0-9][0-9]\/[0-9][0-9]\/[0-9][0-9][0-9][0-9]/){
if(RSTART!=1){
val=substr($0,1,RSTART-1)
}
val=val substr($0,RSTART+6,4)"/"substr($0,RSTART+3,2)"/"substr($0,RSTART,2)
print val substr($0,RSTART+RLENGTH)
}'
Объяснение: Добавление пояснения к приведенному выше коду сейчас.
echo "xxx 03/11/2018" | ##Using echo command for printing string and passing its output into awk command.
awk ' ##Starting awk program here.
match($0,/[0-9][0-9]\/[0-9][0-9]\/[0-9][0-9][0-9][0-9]/){ ##Using match function for matching regex 2 digits / 2 digits / 4 digits.
if(RSTART!=1){ ##Checking if RSTART is NOT equal to 1 then do following.
val=substr($0,1,RSTART-1) ##Creating variable val whose value is substring from 1 to RSTART-1, RSTART and RLENGTH are variables which will be SET once a match of regex is found bymatch function of awk.
} ##Closing block of if condition here.
val=val substr($0,RSTART+6,4)"/"substr($0,RSTART+3,2)"/"substr($0,RSTART,2) ##Creating variable val here as per OPs need YYYY/MM/DD by using substring and its index values changing.
print val substr($0,RSTART+RLENGTH) ##Printing value of variable val and substring from value of RSTART+RLENGTH to till end of line.
}' ##Closing block of match now.
Это будетзаботиться о до и после текста соответствующей даты тоже.Как и в примере выше, я добавил xxx
, и он будет введен до даты, как показано ниже.
xxx 2018/11/03
ИЛИ, если вы хотите напечатать другие строкивместе со строками YYYY/MM/DD
, затем попробуйте выполнить следующие действия.
echo "xxx 03/11/2018" |
awk '
match($0,/[0-9][0-9]\/[0-9][0-9]\/[0-9][0-9][0-9][0-9]/){
if(RSTART!=1){
val=substr($0,1,RSTART-1)
}
val=val substr($0,RSTART+6,4)"/"substr($0,RSTART+3,2)"/"substr($0,RSTART,2)
print val substr($0,RSTART+RLENGTH)
next
}
1 '
ПРИМЕЧАНИЕ: Поскольку моя версия awk
старая, поэтому яиспользуя match($0,/[0-9][0-9]\/[0-9][0-9]\/[0-9][0-9][0-9][0-9]/
, но я считаю, что вы можете использовать match($0,/[0-9]{2}\/[0-9]{2}\/[0-9]{4}/)
, если ваша awk
- новая версия.