多次重复文本
我想重复输入文本 5 次,并想保存在另一个文本文件中。但是在每次重复中,第一行和最后一行编号只能更改。
我的输入文本是:
READ 1 ALL
DMN 2,3 ^DTND
DEL 2,3
WRITE 1A ALL
输出:
READ 1 ALL
DMN 2,3 ^DTND
DEL 2,3
WRITE 1A ALL
READ 2 ALL
DMN 2,3 ^DTND
DEL 2,3
WRITE 2A ALL
READ 3 ALL
DMN 2,3 ^DTND
DEL 2,3
WRITE 3A ALL
READ 4 ALL
DMN 2,3 ^DTND
DEL 2,3
WRITE 4A ALL
READ 5 ALL
DMN 2,3 ^DTND
DEL 2,3
WRITE 5A ALL
我试过
#!/bin/sh
for file in `cat input.txt`
do
yes $file
done
回答
你可以用 Perl 做到这一点:
echo 'READ %s ALL
DMN 2,3 ^DTND
DEL 2,3
WRITE %sA ALL' | perl -0777 -nE '
for($x=1; $x<=5; $x++) { say sprintf $_, $x, $x }'
或者在 awk 中:
echo 'READ %s ALL
DMN 2,3 ^DTND
DEL 2,3
WRITE %sA ALL' | awk -v RS= '{for(i=1;i<=5;i++) printf($0 "nn",i,i)}'
外壳中的相同概念:
s='READ %s ALL
DMN 2,3 ^DTND
DEL 2,3
WRITE %sA ALL'
for i in {1..5}; do
printf "$snn" "$i" "$i"
done
如果你不希望为创建一个模板printf与使用%s为您更换,我会用perl可用更精确的正则表达式:
echo 'READ 1 ALL
DMN 2,3 ^DTND
DEL 2,3
WRITE 1A ALL' | perl -0777 -nE '
for($x=1; $x<=5; $x++) {
$s=$_;
$s=~s/^(READ |WRITE )(1)(?=D|$)/$1$x/g;
say $s }'