我有一个包含多条记录的文件,每条记录的长度为100.每行有一个长度为50个字符(25-75)的段,保留给State,Country。但是现在我需要段为State,Country(删除空间和Country),同时将字段的长度保持为50.
使用Perl命令perl -pi -e's /,/,/ g'* .txt我能够删除空格,但这会将段的长度减少到49.有没有办法可以删除空间并保持段的长度,并对文件中的所有记录执行此操作?
答案 0 :(得分:0)
为什么在使用sed时可以使用Perl?尝试:
sed 's/,\(\s*\)\([^,]*\)/,\2\1/g'
将逗号和非逗号(文本)加载之间的任何空格移动到文本之后。
a, b, c
变为
a,b ,c
(c后面有空格)
答案 1 :(得分:0)
听起来我们需要做计算 - 这是蛮力的方式:
s/^(.{24})([^,]+)( +)(.{,49})(.{25})$/$1$2$4$3$5/;
这匹配$ 1中的字符位置1-24;国家部分是2美元的第一个逗号,一个或多个空格的字符串为3美元,国家为4美元,字符位置为76-100美元。
替换会移动国家/地区之后的空白,从而保留所请求的长度。
如果你的记录不是100个字符,你得到的是......好吧,可能不是你想要的。你可以调整很多东西,但是(尽管它是未经测试的代码),这有可能是足够的,或者给你你需要的想法。