我需要交换一个字符串的字符(这是mmddyyyy格式)并在yyyymmdd中重新排列它们。此字符串是从文件名(abc_def_08032011.txt
)获得的。
string=$(ls abc_def_08032011.txt | awk '{print substr($0,9,8)}')
例如:
08032011
(这可能不一定是当前日期)20110803
我尝试过分割功能,但由于字符串没有任何分隔符,因此无效。
非常感谢任何想法/建议。
答案 0 :(得分:4)
echo 08032011 | sed 's/\(....\)\(....\)/\2\1/'
或
echo 08032011 | perl -pe 's/(....)(....)/$2$1/'
答案 1 :(得分:1)
为什么不一直使用awk:
echo abc_def_08032011.txt | awk '{print substr($0,13,4) substr($0,9,4)}'
或sed一路,避免一个awk:
echo abc_def_08032011.txt | sed 's/^........\(....\)\(....\).*$/\2\1/'
或一直使用ksh替换以避免产生awk / sed进程:
s=abc_def_08032011.txt
s1="${s#????????}"
s2="${s1%.*}"
echo "${s2#????}${s2%????}"