Vim vi只保留列的前10个字符
如何在vi中实现这一点Vim vi只保留列的前10个字符,vim,awk,sed,Vim,Awk,Sed,如何在vi中实现这一点 awk -F"," awk '{print substr($1,1,10)}' 我只想保留日期列的前10个字符(示例2014-01-01),不包括时间戳 我尝试在awk中执行此操作,但出现以下错误: sed: RE error: illegal byte sequence 我认为这是bash_配置文件设置错误 这是我在bash_档案中的内容: #export LANG=en_US.UTF-8 #export LOCALE=UTF-8 export LC_CTYPE=
awk -F"," awk '{print substr($1,1,10)}'
我只想保留日期列的前10个字符(示例2014-01-01),不包括时间戳
我尝试在awk中执行此操作,但出现以下错误:
sed: RE error: illegal byte sequence
我认为这是bash_配置文件设置错误
这是我在bash_档案中的内容:
#export LANG=en_US.UTF-8
#export LOCALE=UTF-8
export LC_CTYPE=C
export LANG=C
在vim中,执行以下操作:
:%norm! 11|D
这将影响缓冲区中的所有行
如果您愿意,:s
也可以做这项工作
:%s/.\{,10}\zs.*//
:将替换应用于所有行:%s/
:匹配任何内容最多10次(贪婪)\{,10}
:表示匹配的开始\zs
:匹配行的其余部分*
:s/
:/
第二部分的结尾(由于两个s
之间没有任何内容,请用“无”替换,即删除)/
--可视块--
模式,可通过CTRL-V
访问(在Windows上通常CTRL-Q
)。然后您可以按d键删除所选内容
或者使用简单的替换命令
:%s/\%>10c.*//
-第十列后匹配\%%>10c
-匹配任何单个字符,但不匹配行尾
-尽可能多地匹配前面原子的0个或多个*
:1,3s/\%>10c.*//
这将取代前三行。在哪里指定列?@jxn上面的命令中有一个幻数
11
。这可能意味着什么?也许在给定的上下文中,10l
比11 |
更容易,这是非常有用的。。。我不敢相信我没有用那么多,只是因为我忘了这个:-o@BenSchwehn代码>忽略映射。它清楚地写在文件中。阅读:h:norm
极不可能awk
产生错误消息sed:RE-error:invalical byte sequence
。清理您的问题以确保准确,并显示示例输入和预期输出。为什么要在vi
中执行此操作?如果您的区域设置有问题,可以尝试LC_ALL=C awk'{print substr($0,1,10)}文件>输出。