在Linux中:如何以相同的顺序重复文件中的多行?

在Linux中:如何以相同的顺序重复文件中的多行?,linux,bash,text,Linux,Bash,Text,输入文件包含以下行: a b c 我希望输出为(n次): 我试过下面的命令,但它不能维持秩序 while read line; do for i in {1..4}; do echo "$line"; done; done < file 将seq与xargs一起使用: seq 2 | xargs -Inone cat file 将seq与xargs一起使用: seq 2 | xargs -Inone cat file 另一个解决办法可能是 #multicat count filen

输入文件包含以下行:

a
b
c
我希望输出为(n次):

我试过下面的命令,但它不能维持秩序

while read line; do for i in {1..4}; do echo "$line"; done; done < file

seq
xargs
一起使用:

seq 2 | xargs -Inone cat file

seq
xargs
一起使用:

seq 2 | xargs -Inone cat file

另一个解决办法可能是

#multicat count filename(s)
multicat() {
        local count=$1
        shift
        for((i=0;i < $count; i++)) {
                cat "$@"
        }
}

multicat 3 abc          # outputs the "abc" file 3 times
#多点计数文件名
multicat(){
本地计数=$1
转移
对于((i=0;i<$count;i++){
猫“$@”
}
}
multicat 3 abc#输出“abc”文件3次

另一种解决方案可能是

#multicat count filename(s)
multicat() {
        local count=$1
        shift
        for((i=0;i < $count; i++)) {
                cat "$@"
        }
}

multicat 3 abc          # outputs the "abc" file 3 times
#多点计数文件名
multicat(){
本地计数=$1
转移
对于((i=0;i<$count;i++){
猫“$@”
}
}
multicat 3 abc#输出“abc”文件3次

printf
大括号扩展
可用于将字符串重复N次,然后可将其作为输入传递给执行连接工作的
cat

$ printf "file %.s" {1..4}
file file file file $ 

$ cat $(printf "file %.s" {1..4})
a
b
c
a
b
c
a
b
c
a
b
c

使用
perl
,如果文件小到足以满足整个内存需求

$ perl -0777 -ne 'print $_ x 2' file 
a
b
c
a
b
c

printf
brace expansion
可用于将字符串重复N次,然后可将其作为输入传递给执行连接任务的
cat

$ printf "file %.s" {1..4}
file file file file $ 

$ cat $(printf "file %.s" {1..4})
a
b
c
a
b
c
a
b
c
a
b
c

使用
perl
,如果文件小到足以满足整个内存需求

$ perl -0777 -ne 'print $_ x 2' file 
a
b
c
a
b
c

打印
文件
三次的小型解决方案:

cat $(yes file | head -n 3)
命令替换
$()
扩展为
cat文件

这只适用于没有空格的文件名。如果文件名包含空格或制表符,请设置
IFS=$'\n'

打印
文件的小型解决方案
3次:

cat $(yes file | head -n 3)
命令替换
$()
扩展为
cat文件

这只适用于没有空格的文件名。如果文件名包含空格或制表符,请设置
IFS=$'\n'

简单地将文件追加n次,如循环中的
cat file1>>file2
怎么样?简单地将文件追加n次,如循环中的
cat file1>>file2
怎么样?不管
seq
不是在所有系统上都可用,该解决方案都可以工作并解决问题。投票人能解释一下吗+1从我这里。不管
seq
是否在所有系统上都可用,该解决方案都有效并解决了问题。投票人能解释一下吗+从我这里得到1。