1

出力を提供するコマンドがあります:

/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 に慣れていませんが、これは私が使いたいコマンドだと思います。誰かアイデアはありますか?

4

4 に答える 4

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.*(?=\..*?$)'
于 2013-10-03T16:43:48.740 に答える
2

または単に sed ワンライナー:

 echo /home/konnor/md5sums:ea66574ff0daad6d0406f67e4571ee08  counted-file.xml.20131003-083611 \
     | sed -E 's/.*:(.*\.xml).*/\1/' 
于 2013-10-03T16:42:05.020 に答える
2
$ awk -F[:.] -v OFS="." '{print $2,$3}' <<< "/home/konnor/md5sums:ea66574ff0daad6d0406f67e4571ee08 counted-file.xml.20131003-083611"
ea66574ff0daad6d0406f67e4571ee08 counted-file.xml
于 2013-10-03T16:45:12.973 に答える
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

于 2013-10-03T16:42:21.707 に答える