输入:
3abdce
412ae3
21dege
预期输出 - 删除行的起始位,并根据该位指定的偏移量插入空白
abd ce
12ae 3
1d ege
我只能删除第一个字符:
sed 's/^.\{1\}//g' file
答案 0 :(得分:1)
使用gawk
,因为它支持空FS
和OFS
awk -v FS="" -v OFS="" '{gsub($($1+1),"& ");gsub(/^./,"")}1' inputfile
abd ce
12ae 3
1d ege
此处,FS
和OFS
设置为空白,并且两个gsub
函数用于所需的搜索和替换操作。
答案 1 :(得分:1)
这个应该可以解决问题:
awk '{ split($0, a, ""); print substr($0, 2, a[1])" "substr($0, 2+a[1]) }' yourfile
输出:
abd ce
12ae 3
1d ege
答案 2 :(得分:1)
如果perl
没问题
$ perl -F -lane 'print @F[1..$F[0]], " ", @F[$F[0]+1..$#F]' ip.txt
abd ce
12ae 3
1d ege
-F -lane
拆分空字符串上的每一行,因此每个字符都是一个字段,保存在@F
数组0
答案 3 :(得分:1)
GNU awk
解决方案:
awk -v FS="" '{ print substr($0,2,$1), substr($0,$1+2) }' file
$1
- 指向第一个数字值(切片大小)输出:
abd ce
12ae 3
1d ege