vim 给列表中的偶数行和奇数行附加不同的值

46scxncf  于 10个月前  发布在  其他
关注(0)|答案(5)|浏览(119)

我需要添加以下列表:

urack-L-
urack-L-
urack-L-
urack-L-
urack-L-

字符串
关于Urack-L-

urack-L-100
urack-L-101
urack-L-100
urack-L-101
urack-L-100


等等
除了增量(100,101,102等)之外,我还没有找到一种方法。

lrpiutwd

lrpiutwd1#

awk:

awk '{printf "%s%d\n", $0, 101 - NR % 2}' file

字符串
NR变量保存当前记录编号,默认情况下为当前行号。NR % 2对于偶数或奇数行的计算结果为0或1。

bfrts1fy

bfrts1fy2#

如果你有GNU sed,你可以使用一个扩展地址:

sed '1~2s/$/100/;2~2s/$/101/' infile

字符串
其中地址*first*~*step*匹配具有地址 first 的行,然后每step匹配一行。
或者,正如CTAC的评论所指出的那样:

sed 's/$/100/;n;s/$/101/' infile


这使用n命令打印模式空间(包含奇数行)并将下一行(偶数行)加载到其中。这应该适用于任何符合POSIX的sed。

8iwquhpp

8iwquhpp3#

:%s/$/\=(line(".")%2==0?"101":"100")/

 % ................ whole file
 s ................ substitute 
 $ ................ end of line
 \=(line(".") ..... gets the number of the current line
 %2==0? ........... if the rest of division equals zero

字符串
引用link

ccrfmcuu

ccrfmcuu4#

这不适合sed,只需要使用一个shell循环和一个你测试的变量。

i=100
while read line
do
    echo "$line$i"
    if [[ i == 100 ]]
    then i=101
    else i=100
    fi
done < inputfile > outputfile

字符串

c0vxltue

c0vxltue5#

正则表达式也可以很好地工作:

:%s/\(^.*\)\n\(.*\)/\1100\r\2101/g

字符串

相关问题