iT邦幫忙

0

請問關於SHELL SCRIPT上字元調換順序

  • 分享至 

  • twitterImage

各位大大好

如題,小弟是shell script萌新,想在一塊板子上放script檔執行,

但是因為一些原因沒辦法使用陣列,現在想要將一個字串內的幾個字元調換順序。

舉例來說 str="a b c d e f" 把第一個字與第三個字對調 str1="c b a d e f"

一開始想利用str1=${$str:}.....的這種方法,但是中間的字元位置判斷感覺有點複雜。

後來想要用awk去做(str1=echo str | awk '{print ...}')這種方式,不過遇到一個問題

  1. awk中的$1 $2...在str對應 a b...,那能不能利用一個整數的變數去指定呢?
    舉例來說str1=echo str | awk '{print $1}這時echo $str1會是a,那有沒有
    類似n=1 str1=echo str | awk '{print $(($n))} 之類的寫法呢?

或是有其他更好的做法也請各位大大不吝題點,謝謝。

weiclin iT邦高手 4 級 ‧ 2018-05-30 02:17:42 檢舉
n=1;
str1=`echo str | awk "{print \$$n}"`;
qwert6660 iT邦新手 5 級 ‧ 2018-05-30 20:35:48 檢舉
上面的方法只得到一組奇怪的數字@@
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0

建議的方式如下:

str='a b c d e f'
ary=( $str )
new_str="${ary[2]} ${ary[1]} ${ary[0]} ${ary[3]} ${ary[4]}"
echo "str is $str"
echo "new_str is $new_str"

結果:

str is a b c d e f
new_str is c b a d e
qwert6660 iT邦新手 5 級 ‧ 2018-05-30 20:31:12 檢舉

大大你好,感謝你的回答。

但是題目中有說到沒辦法用陣列

如果可以用陣列我也不用搞這麼麻煩了ww

我要發表回答

立即登入回答