2012-12-18 113 views
3

我有三个.csv文件是从MS SQLServer中保存查询输出的。我需要将这些文件加载​​到一个Informix数据库中,这需要粘贴一个尾随分隔符。这是很容易做到的sed使用如何使用sed从第一行删除第一个字符

s/$/,/g

然而,这些文件还包含在第一行的第一个字符位置(如VIM显示,但不编或SED)的。

我需要摆脱这个角色。它使用vim的x命令作为一个字符删除。我如何使用sed描述这个字符,这样我就可以删除它而不删除这一行。我试过1s/^.//g,但那不起作用。

回答

5

试试这个:

sed -e '1s/^.//' input_file > output_file 

或者,如果你想就地编辑的文件:

sed -ie '1s/^.//' input_file 

(编辑)显然s/^.//不报价做它,更新。

+0

'^ \。'只会匹配行开头的文字'.','g'标志与重定向一样是冗余的,最重要的是,这将在所有匹配行上执行替换,而不仅仅是第一行。 –

+0

@sudo_O修正了它=)不知道为什么我把它放在第一位。 –

1

卸下第一线就地第一个字符:

sed -i '1s/^.//' file 
+0

这仍然让我为难。因为你的工作,-e“”和-e''之间有什么区别(如果有的话)。 – octopusgrabbus

+0

这里引用并没有什么区别,所以我不确定你做了什么,引用对于shell来说很重要,比如变量扩展和globbing。 –

1

尝试:

sed -i '1s/^.\(.*\)/\1/' file 

这应该删除从第一行第一个字符。 (尝试没有-i参数第一,以确保)

编辑:我最初发布以下,这从每行删除第一个字符。在重读这个问题时我意识到这并不是我想要的。

sed -i 's/^.\(.*\)/\1/' file 
+0

谢谢,但这是我想要的第一行。该字节对齐数据只是第一行/第一个字符。 – octopusgrabbus

+0

对不起,编辑了答案。 – nullrevolution

相关问题