$string1=\-9-0 ---> $increment1=\-10-0
$string2=\-99 ----> $increment2=\-100
$string3=\-999-0-4 --> $increment3=\-1000-0-4
我只是需要增加至+1值第一次出現整數和整數與-
$string1=\-9-0 ---> $increment1=\-10-0
$string2=\-99 ----> $increment2=\-100
$string3=\-999-0-4 --> $increment3=\-1000-0-4
我只是需要增加至+1值第一次出現整數和整數與-
使用AWK前綴首先發生的歷史整數
awk 'BEGIN{FS=OFS="-"} {$2=$2+1; print}' <<<$string1
說明:
我們設置了字段分隔符/分隔符,即FS
爲-
, 因此在字符串-9-0
第二個字段將是9
。
然後我們遞增$2
1
。也OFS=-
,以便打印字段時-
作爲分隔符包含,否則awk默認認爲空間作爲分隔符。
要保存回變量:
$ string1=$(awk 'BEGIN{FS=OFS="-"} {$2=$2+1;}1' <<<$string1)
$ echo $string1
-10-0
$ string3=$(awk 'BEGIN{FS=OFS="-"} {$2=$2+1;}1' <<<$string3)
$ echo $string3
-1000-0-4
使用awk
:
一行代碼:
awk 'BEGIN{FS=OFS="="}match($2,/[0-9]+/){sub(/[0-9]+/,substr($2,RSTART,RLENGTH)+1,$2)}1' infile
,甚至這會爲給定的輸入樣本
工作awk -F'[^[:digit:]]+' '{t=$0; sub(/-[0-9]+/,"-"$3+1,t); print t }' infile
輸入:
$ cat infile
$string1=\-9-0
$string2=\-99
$string3=\-999-0-4
輸出:
$ awk 'BEGIN{FS=OFS="="}match($2,/[0-9]+/){sub(/[0-9]+/,substr($2,RSTART,RLENGTH)+1,$2)}1' infile
$string1=\-10-0
$string2=\-100
$string3=\-1000-0-4
$ awk -F'[^[:digit:]]+' '{t=$0; sub(/-[0-9]+/,"-"$3+1,t); print t }' infile
$string1=\-10-0
$string2=\-100
$string3=\-1000-0-4
更好的可讀性:
awk '
BEGIN{
FS=OFS="="
}
match($2,/[0-9]+/){
sub(/[0-9]+/,substr($2,RSTART,RLENGTH)+1,$2)
}1
' infile
很好的答案,感謝您的幫助。我們可以做同樣的事情,而不是文件輸入。我們可以做回聲「\ -9」| awk .....應該給我\ -10。 –
真棒..謝謝 –
爲什麼字符串改爲增加?你也應該發佈你試圖解決這個問題...... – Sundeep
試圖區分增量字符串如何看起來像一個例子。我沒有解決它尋求幫助獲得解決方案 –
你需要更好地格式化問題,把輸入和輸出到兩個單獨的代碼塊......只改變你需要改變的東西......這個論壇是關於得到的幫助,你嘗試過的代碼,但沒有工作..而不是獲得完整的代碼... – Sundeep