我正在尝试删除文件中每行的第一个数字和最后6位数字以外的所有内容。到目前为止,我已使用sed
删除了除最后6位数之外的所有内容,如下所示:
sed -r 's/.*(.{6})/\1/' test
我是否有办法修改此项以便保留第一个数字?这个数字可以是任何长度,但总是后跟一个空格。基本上,我想摆脱/home/usr/file
并且只保留123456789 123456
任何帮助将不胜感激!
输入行:
123455679 /home/usr/file123456
期望的输出:
123456789 123456
答案 0 :(得分:3)
在开始时做同样的事情。
sed -r 's/(.).*(.{6})/\1\2/' test
(我不知道这有多高效。它可能需要回溯最后一场比赛的长度。)
抓住第一个“字段”(空格分隔)和最后六个可以使用的字符。
sed -r 's/([^[:space:]]*) .*(.{6})/\1 \2/' test
虽然我认为awk
解决方案通常是一个更好的主意。
答案 1 :(得分:3)
echo 5 /home/usr/file123456 | awk '{print $1,substr($2,length($2)-5,6)}'
答案 2 :(得分:0)
$ echo '123456789 /home/usr123/file123456' | sed -r 's/ .*(.{6})/ \1/'
123456789 123456