我如何在vi中执行此操作?
awk -F"," awk '{print substr($1,1,10)}'
我只想保留我的日期列的前10个字符(例如2014-01-01)并且不包括时间戳。
我尝试在awk中执行此操作但是我收到了此错误:
sed: RE error: illegal byte sequence
我认为这是一个bash_profile设置错误。
这就是我在bash_profile中所拥有的:
#export LANG=en_US.UTF-8
#export LOCALE=UTF-8
export LC_CTYPE=C
export LANG=C
答案 0 :(得分:9)
在vim中,执行:
:%norm! 11|D
这会影响缓冲区中的所有行。
如果您愿意,:s
也可以完成这项工作。
答案 1 :(得分:6)
:%s/.\{,10}\zs.*//
:%s/
:将替换应用于所有行.\{,10}
:匹配任何最多10次(贪婪)\zs
:表示比赛的开始.*
:匹配行的其余部分/
::s
/
:s
的第二部分结束(因为两个/
之间没有任何内容,所以无需替换,即删除)答案 2 :(得分:4)
要编辑文本块,可以通过-- VISUAL BLOCK --
(在Windows上CTRL-V
)访问CTRL-Q
模式。然后,您可以按 d 删除您的选择。
或者使用简单的替代命令
:%s/\%>10c.*//
\%>10c
- 第十列后的匹配.
- 匹配任何单个字符,但不匹配行尾*
- 匹配前面原子的0或更多,尽可能多或者您可以使用范围
:1,3s/\%>10c.*//
这将取代前三行。