String 删除第一个n“;字;来自Bash中的字符串变量
我想从字符串变量“DATES”中删除前4个单词 有人有简单的解决方法吗 以下是我的例子:String 删除第一个n“;字;来自Bash中的字符串变量,string,bash,String,Bash,我想从字符串变量“DATES”中删除前4个单词 有人有简单的解决方法吗 以下是我的例子: DATES="31 May 2021 10:22:01 30 May 2021 10:23:01 29 May 2021 10:24:01" WC=$(echo $DATES | wc -w) DATE_COU
DATES="31 May 2021 10:22:01 30 May 2021 10:23:01 29 May 2021 10:24:01"
WC=$(echo $DATES | wc -w)
DATE_COUNT=$(( $WC / 4 - 1 ))
for i in {0..$DATE_COUNT}
do
YEAR=$(echo $DATES | awk '{print $3}')
MONTH=$(echo $DATES | awk '{print $2}')
MONTH=$( date --date="$(printf "01 %s" $MONTH)" +"%m")
DAY=$(echo $DATES | awk '{print $1}')
TIME=$(echo $DATES | awk '{print $4}' | sed 's/://g')
DATE_ARRAY[$i]="$YEAR$MONTH$DAY$TIME"
#Remove first 4 words from string
done
使用cut
DATES=“2021年5月31日10:22:01 2021年5月30日10:23:01 2021年5月29日10:24:01”
echo$DATES | cut-d'-f 5-
输出:
30 May 2021 10:23:01 29 May 2021 10:24:01
您甚至可以将其用于比awk更清洁的解决方案,如下所示:
YEAR=$(echo$日期| cut-d''-f3)
删除n个首字母的通用版本
remove\n\u first\u words(){
回声$2 |切割-d'-f$($1+1))-
}
删除\u n \u第一个\u单词4“$DATES”
使用bash regex操作符=~
:
$ [[ $DATES =~ ^(([^ ]+ +){4})(.*) ]] && echo ${BASH_REMATCH[3]}
30 May 2021 10:23:01 29 May 2021 10:24:01
可能使用
阅读
DATES="31 May 2021 10:22:01 30 May 2021 10:23:01 29 May 2021 10:24:01"
read -ra dates <<< "$DATES"; echo "${dates[@]:4}"
要获取总单词/元素,如使用wc-c
echo "${#DATES[*]}"
嗯<代码>echo“2021年5月31日10:22:01 2021年5月30日10:23:01 2021年5月29日10:24:01”| awk'{for(i=5;i 5)“%s”:“%s”,$i;print”“}
结果“2021年5月30日10:23:01 2021年5月29日10:24:01”
或者你说的是除了$DATES
之外的其他4个单词和其他字符串吗?不,我说的是$DATES@user8514011:对于{0..$DATE\u COUNT}中的i
:这会执行循环一次,将i
设置为字符串{0..2}
(即,假设DATE\u COUNT为2)。
echo "${#DATES[*]}"