我在将空格分隔的文本文件加载到表中时遇到问题。这个文本文件中的数据是由teragen生成的,因此,它只是一个虚拟数据,其中只有2列,并且第一列包含随机的特殊字符串的值。
示例:
~~~{ZRGHS|
~~~{qahVN)
我遇到了一个问题,因为其中一些值中有一个空格作为随机ASCII字符,这导致它认为有3列,而我的表有2列,所以它们被拒绝了。
因此,我想要做的是只从这些被拒绝的行中删除第一个空格,这将需要在每一行上重复多次,然后尝试重新加载它们。sed是最好的方式,还是像tr这样的其他方式更合适?
谢谢!
发布于 2014-01-08 07:01:08
据我所知,您希望删除除最后两个之外的所有空格。
$ echo‘一二三四’| rev | sed 's/ 2g‘| rev onetwo三四
或者,使用一个文件:
rev myfile | sed 's/ 2g‘|rev
$ echo‘一二三四’| sed ':a;/ .* /{s/;ba}‘onetwo三四
使用一个文件:
sed ':a;/ .* /{s/;ba}‘myfile
$ echo‘一二三四’| sed -r 's/(.*)(^ +) (^ +)$/\1\n\2 \3/;h;s/\n.*/;s/g;g;s/\n.*\n//‘onetwo三四
使用一个文件:
sed -r 's/(.*)(^ +) (^ +)$/\1\n\2 \3/;h;s/\n.*//;s/ g;g;s/\n.*\n/‘myfile
发布于 2014-01-08 06:58:17
要删除一行中的第一个空格,请使用
echo "my line with spaces" | sed 's/ //'取决于您的方法的具体情况(固定的列长度?如何添加数据?)也许有一种更好的方法可以在单个步骤中完成这一点,而不是一遍又一遍地解析被拒绝的行。
发布于 2017-11-17 22:09:45
要从字符串中剥离/删除第一个字符:
function stringStripStart { echo ${1:1:${#1}} }
类似于删除处理字符:
function stringStripEnd { FINAL_LEN=${#1}-1 echo ${1:0:$FINAL_LEN} }
注意:对于空字符串,需要添加一些额外的条件。
https://stackoverflow.com/questions/20983631
复制相似问题