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

时间:2017-03-04 08:56:05

标签: linux bash text

输入文件包含以下行:

a
b
c

我希望输出为(n次):

a
b
c
a
b
c

我已经尝试过以下命令,但它没有维护顺序

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

但输出是

a
a
b
b
c
c

4 个答案:

答案 0 :(得分:2)

seqxargs一起使用:

seq 2 | xargs -Inone cat file

答案 1 :(得分:1)

另一种解决方案可能是

#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

答案 2 :(得分:0)

printfbrace 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

答案 3 :(得分:0)

打印class User def authenticated?(*p) raise NotImplementedError, "IMPLEMENT ME IN #{self.class}##{__method__}" end end class InternalUser < User end InternalUser.new.authenticated?('user', 'user@test.com') #interface.rb:3:in `authenticated?': IMPLEMENT ME IN InternalUser#authenticated? (NotImplementedError) 3次的小型解决方案:

file

命令替换cat $(yes file | head -n 3) 扩展为$()。 这仅适用于没有空格的文件名。如果您的文件名包含空格或制表符,请设置cat file file file