在数字之间插入符号

-2 linux awk sed

我在Linux OS中有一个包含一些随机数的文件:

1
22
333
4444
55555
666666
7777777
88888888
Run Code Online (Sandbox Code Playgroud)

现在,我有两个条件:1.从每个条目中删除最后3位数字并/在休息之间放置.2.对于数字<= 3,只需添加/替换/符号.

命令我正在尝试满足第一个要求的是:

 sed -e 's|\(.\)|\1/|g;s|\(.*\)/\(.\/\)\{3\}|\1|g'
Run Code Online (Sandbox Code Playgroud)

需要的是:

/
/
/
4
5/5
6/6/6
7/7/7/7
8/8/8/8/8
Run Code Online (Sandbox Code Playgroud)

请帮忙.

and*_*lrc 5

这样的事可能适合你:

% sed 's/.\{1,3\}$//;s/./\/&/g;s/.//;s/^$/\//' file
/
/
/
4
5/5
6/6/6
7/7/7/7
8/8/8/8/8
Run Code Online (Sandbox Code Playgroud)

这里没有明智之举:

s/.\{1,3\}$//; # Remove last 3 character
s/./\/&/g;     # Insert / before each character
s/.//;         # Remove first character (it's now a /)
s/^$/\//       # Insert slash on all empty lines
Run Code Online (Sandbox Code Playgroud)

gawk的替代解决方案:

awk -v FS='' -v OFS='/' '{if (NF > 3) NF=(NF-3); else $0 = OFS}1' file
Run Code Online (Sandbox Code Playgroud)