我有以下字符串,并希望删除冒号后的第一个冒号和所有字符可打印或不可打印,如果该文件是二进制的。如何删除第一个冒号后的所有字符
/dir1/dir2/somefile.txt:09/15/2014 11:25:54 root:sometext:sometext:
结束了
/dir1/dir2/somefile.txt
我有以下字符串,并希望删除冒号后的第一个冒号和所有字符可打印或不可打印,如果该文件是二进制的。如何删除第一个冒号后的所有字符
/dir1/dir2/somefile.txt:09/15/2014 11:25:54 root:sometext:sometext:
结束了
/dir1/dir2/somefile.txt
您可以使用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
来提取第一个字段。完美,谢谢... – vid 2014-09-19 18:32:26
String str = "/dir1/dir2/somefile.txt:09/15/2014 11:25:54 root:sometext:sometext:"
String result= str.substring(0, str.indexOf(':')+1);
您是否意识到这是Korn shell的问题? – cdarke 2014-09-20 13:29:57
你不需要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
更好地开始吧。 – 2014-09-19 18:14:27
我花了最近3个小时搜索这个网站和其他人,并尝试了所有的例子。我已经遵循了我可以找到的每个sed示例,并且可以删除第一个之前的所有字符:如果没有其他冒号,则可以删除之后的所有字符。请提出有用的意见。 – vid 2014-09-19 18:24:58