例如qa_sharutils-2009-04-22-15-20-39
,想砍過去的20個字節,並獲得「qa_sharutils
」。如何砍在bash字符串choping字符串的最後n個字節?
我知道該怎麼做,在中美戰略經濟對話,但爲什麼$A=${A/.\{20\}$/}
不起作用?
謝謝!
例如qa_sharutils-2009-04-22-15-20-39
,想砍過去的20個字節,並獲得「qa_sharutils
」。如何砍在bash字符串choping字符串的最後n個字節?
我知道該怎麼做,在中美戰略經濟對話,但爲什麼$A=${A/.\{20\}$/}
不起作用?
謝謝!
如果字符串被存儲在一個變量名爲$海峽,那麼這將讓你給你的子,而不在bash的最後20位
${str:0:${#str} - 20}
基本上,串切片可以做到用
${[variableName]:[startIndex]:[length]}
和字符串的長度是
${#[variableName]}
編輯: 解決方案使用的sed,關於文件的工作原理:
sed 's/.\{20\}$//' < inputFile
在猛砸${parameter/pattern/string}
語法,模式是路徑通配符風格的模式,而不是一個正則表達式。在通配符語法點.
只是一個字面點和大括號用於匹配選項的選擇(如在正則表達式的管|
),因此該行會簡單地刪除文本字符串".20"
。
感謝您的解釋,但似乎只有一個答案可以接受,不好意思:) – jaimechen 2009-11-08 07:57:55
有幾種方式來完成的基本任務。
$ str="qa_sharutils-2009-04-22-15-20-39"
如果你想剝去最後20個字符。此子選擇是基於零:
$ echo ${str::${#str}-20}
qa_sharutils
的「%」和「%%」從字符串的右手側剝離。舉例來說,如果你想跟隨第一基名,減什麼「 - 」:
$ echo ${str%%-*}
qa_sharutils
`回聲「$ {海峽:: - 20}」`就足夠了。 – 2013-06-26 16:02:00
只有當你的最後20個字節總是最新的。
$ str="qa_sharutils-2009-04-22-15-20-39"
$ IFS="-"
$ set -- $str
$ echo $1
qa_sharutils
$ unset IFS
或者當不需要第一次衝刺和超越時。
$ echo ${str%%-*}
qa_sharutils
使用AWK:
echo $str | awk '{print substr($0,1,length($0)-20)}'
或使用字符串操作 - 回波$ {字符串:位置:長度}:
echo ${str:0:$((${#str}-20))}
`echo「$ {str :: - 20}」`就足夠了。 – 2013-06-26 16:01:41
類似於SUBSTR( 'ABCDEFG',2-1 3)在PHP中:
echo 'abcdefg'|tail -c +2|head -c 3
`$ {STR :: - 20}}`就足夠了。 – 2013-06-26 16:02:28