String 删除第一个n“;字;来自Bash中的字符串变量

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”中删除前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_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[*]}"