2014-09-19 238 views
-1

我有以下字符串,并希望删除冒号后的第一个冒号和所有字符可打印或不可打印,如果该文件是二进制的。如何删除第一个冒号后的所有字符

/dir1/dir2/somefile.txt:09/15/2014 11:25:54 root:sometext:sometext: 

结束了

/dir1/dir2/somefile.txt 
+1

更好地开始吧。 – 2014-09-19 18:14:27

+0

我花了最近3个小时搜索这个网站和其他人,并尝试了所有的例子。我已经遵循了我可以找到的每个sed示例,并且可以删除第一个之前的所有字符:如果没有其他冒号,则可以删除之后的所有字符。请提出有用的意见。 – vid 2014-09-19 18:24:58

回答

0

您可以使用cut

$ str="/dir1/dir2/somefile.txt:09/15/2014 11:25:54 root:sometext:sometext:" 
$ echo "$str" | cut -d: -f1 
/dir1/dir2/somefile.txt 
  • -d:分隔符设置为:
  • -f1来提取第一个字段。
+1

完美,谢谢... – vid 2014-09-19 18:32:26

-1
String str = "/dir1/dir2/somefile.txt:09/15/2014 11:25:54 root:sometext:sometext:" 

String result= str.substring(0, str.indexOf(':')+1); 
+0

您是否意识到这是Korn shell的问题? – cdarke 2014-09-20 13:29:57

0

你不需要sed,或cut,或者任何外部的程序,Korn shell中有这个功能,但时间:

str='/dir1/dir2/somefile.txt:09/15/2014 11:25:54 root:sometext:sometext:' 
IFS=':' read one two <<< "$str" 
echo $one 
/dir1/dir2/somefile.txt 

IFS是字段分隔符。 < < <是KSH的一个相对新近的补充,被称为“这里的字符串”(它也在bash中)。如果您使用的是旧千瓦时(如ksh88),请使用:

IFS=':' read one two << END 
$str 
END 
echo $one 
/dir1/dir2/somefile.txt 
相关问题