提取字符串我有一個文件名如何從文本中殼
"PHOTOS_TIMESTAMP_5373382"
我想從這個文件名"PHOTOS_5373382"
提取和添加"ABC"
即最後希望它看起來像
"abc_PHOTOS_5373382"
在shell腳本。
提取字符串我有一個文件名如何從文本中殼
"PHOTOS_TIMESTAMP_5373382"
我想從這個文件名"PHOTOS_5373382"
提取和添加"ABC"
即最後希望它看起來像
"abc_PHOTOS_5373382"
在shell腳本。
echo "PHOTOS_TIMESTAMP_5373382" | awk -F"_" '{print "ABC_"$1"_"$3}'
echo
將爲awk
命令提供輸入。
awk
命令使用選項-F
對輸入字符'_'
執行數據標記。
單個令牌(從1開始)可以使用$n
訪問,其中n
是令牌編號。
你將需要下面的命令序列直接在殼,優選bash
殼(或)作爲一個完整的腳本,其採用單個參數的文件被轉換
#!/bin/bash
myFile="$1" # Input argument (file-name with extension)
filename=$(basename "$myFile") # Getting the absolute file-path
extension="${filename##*.}" # Extracting the file-name part without extension
filename="${filename%.*}" # Extracting the extension part
IFS="_" read -r string1 string2 string3 <<<"$filename" # Extracting the sub-string needed from the original file-name with '_' de-limiter
mv -v "$myFile" ABC_"$string1"_"$string3"."$extension" # Renaming the actual file
在運行腳本
$ ./script.sh PHOTOS_TIMESTAMP_5373382.jpg
`PHOTOS_TIMESTAMP_5373382.jpg' -> `ABC_PHOTOS_5373382.jpg'
雖然我很喜歡AWK
本地殼溶液
k="PHOTOS_TIMESTAMP_5373382"
IFS="_" read -a arr <<< "$k"
echo abc_${arr[0]}_${arr[2]}
桑達解決方案
echo "abc_$k" | sed -e 's/TIMESTAMP_//g'
abc_PHOTOS_5373382
'MV PHOTOS_TIMESTAMP_5373382 abc_PHOTOS_5373382'?或者你是否想說「TIMESTAMP」和「ABC」是通用文本的佔位符? –
嘗試查看'cut'命令 –
'sed'是你的朋友 – GMichael