我有一个命令给我输出:
/home/konnor/md5sums:ea66574ff0daad6d0406f67e4571ee08 counted-file.xml.20131003-083611
我需要输出:
ea66574ff0daad6d0406f67e4571ee08 counted-file.xml
我最接近的是:
$ echo /home/konnor/md5sums:ea66574ff0daad6d0406f67e4571ee08 counted-file.xml.20131003-083611 | awk '{ printf "%s", $1 }; END { printf "\n" }'
/home/konnor/md5sums:ea66574ff0daad6d0406f67e4571ee08
我不熟悉awk,但我相信这是我想要使用的命令,任何人都有任何想法?
答案 0 :(得分:2)
或者只是一个ondiner:
echo /home/konnor/md5sums:ea66574ff0daad6d0406f67e4571ee08 counted-file.xml.20131003-083611 \
| sed -E 's/.*:(.*\.xml).*/\1/'
答案 1 :(得分:2)
$ echo "/home/konnor/md5sums:ea66574ff0daad6d0406f67e4571ee08 counted-file.xml.20131003-083611" |
cut -d: -f2 |
cut -d. -f1-2
ea66574ff0daad6d0406f67e4571ee08 counted-file.xml
请注意,这取决于.
中存在的点counted-file.xml
。
答案 2 :(得分:2)
不确定这对你是否合适:
sed 's/^.*:\(.*\)\.[^.]*$/\1/'
以你的例子:
kent$ echo "/home/konnor/md5sums:ea66574ff0daad6d0406f67e4571ee08 counted-file.xml.20131003-083611"|sed 's/^.*:\(.*\)\.[^.]*$/\1/'
ea66574ff0daad6d0406f67e4571ee08 counted-file.xml
此 grep 行也适用:
grep -Po ':\K.*(?=\..*?$)'
答案 3 :(得分:2)
$ awk -F[:.] -v OFS="." '{print $2,$3}' <<< "/home/konnor/md5sums:ea66574ff0daad6d0406f67e4571ee08 counted-file.xml.20131003-083611"
ea66574ff0daad6d0406f67e4571ee08 counted-file.xml