开发者

How can I extract a substring from the results of a cut command in unix?

I have a file that is '|' delimited. One of the fields within the file is a time stamp. The field is in the following format: MM-dd-yyyy HH:mm:ss I'd like to be able to print to a file unique dates. I can use the cut command (cut -f1 -d'|' _file_name_ |sort|uniq) to extract unique dates. However, with the time portion of the field, I'm seeing hundreds of results. After开发者_JAVA百科 I run the cut command, I'd like to take the substring of the first eleven characters to display unique dates. I tried using an awk command such as: awk ' { print substr($1,1-11) }' | cut -f1 -d'|' _file_name_ |sort|uniq > _output_file_

I'm having no luck. Am I going about this the wrong way? Is there a more simple way of extracting the data I need. Any help would be appreciated.


cut -c1-11 will display characters 1-11 of each input line.


if the date is the first (space separated) field in the file, then the list of unique dates is just:

cut -f1 -d' ' filename | sort -u

Update: in addition to @shellter's correct answer, I'll just present an alternative to demonstrate other awk facilities:

awk '{split($10, a); date[a[1]]++} END {for (d in date) print d}' filename


You're all most there. This is based on the idea that the date time stamp is in field 1.

Edit : changed field to 10, also used -u option to sort instead of sep process with uniq

You don't need the cut, awk will do that for you.

awk -F"|" ' { print substr($10,1,11) }'  _file_name_ |sort -u > _output_file_

I hope this helps.

P.S. as you appear to be a new user, if you get an answer that helps you please remember to mark it as accepted, or give it a + (or -) as a useful answer

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜