我有一个文件data.csv,其中包含多行代码:
A
B
C
我希望代码的输出乘以n次:
A
B
C
A
B
C
以下是我尝试过的一行以及它返回的内容的示例:
awk '{for (i=0; i<3 ;i++){ print $1}}' input.csv
A
A
A
B
B
B
C
C
C
与猫和其他工具相同
答案 0 :(得分:2)
这样做:
for i in {1..3}; do cat data.csv; done
但它不适用于管道。
感谢您的评论
答案 1 :(得分:2)
n
请注意,上述内容仅存储文件{{1}}次的名称,而不是文件的内容,因此适用于任何文件任何大小的,因为它使用可忽略的记忆。
答案 2 :(得分:2)
您可以使用cat和printf
cat $(printf "%0.sfile " {1..3})
答案 3 :(得分:1)
这是一个有效的单线程:yes data | head -3 | xargs cat
$ cat data
A
B
C
$ yes data | head -3 | xargs cat
A
B
C
A
B
C
A
B
C
$
head -3
=&gt;此处3
表示n
次。{/ p>
或使用awk
解决方案:
$ cat data
A
B
C
$ awk 'BEGIN{i=0} {a[i]=$0;i++} END {for(i=0;i<=3;i++) for(j=0;j<=NR;j++) print a[j]}' data | sed '/^$/d'
A
B
C
A
B
C
A
B
C
A
B
C
$
答案 4 :(得分:1)
试试这个:
seq 2 | xargs -Inone cat input.csv
答案 5 :(得分:1)
可能是最短的
cat input.csv{,,}
答案 6 :(得分:0)
for (( c=1; c<=3; c++ ))
do
cat Input_file.csv
done
答案 7 :(得分:0)
假设您正在编写shell脚本,为什么要使用awk?
for i in `seq 3`; do
cat data.csv
done
如果您想使用管道进行此操作,例如使用awk,您需要将文件数据存储在内存中或临时保存到磁盘。例如:
cat data.csv | \
awk '{a = a $0 "\n"} END { for (i=0; i<3 ;i++){ printf "%s",a; }}'
答案 8 :(得分:0)
使用sed和hold / pattern空间:
在这种情况下只有一个字母。 ABC:
如果您想打印一次:
cat temp | sed 's/\(.*\)/\1/;N;N;H'
输出:
[anthony@aguevara ~]$ cat temp | sed 's/\(.*\)/\1/;N;N;H;G;G'
A
B
C
[anthony@aguevara ~]$
两次(只需附加一个分号/大写字母G):
cat temp | sed 's/\(.*\)/\1/;N;N;H;G'
输出:
[anthony@aguevara ~]$ cat temp | sed 's/\(.*\)/\1/;N;N;H;G;G'
A
B
C
A
B
C
[anthony@aguevara ~]$
三次(另一个G):
cat temp | sed 's/\(.*\)/\1/;N;N;H;G;G'
输出:
[anthony@aguevara ~]$ cat temp | sed 's/\(.*\)/\1/;N;N;H;G;G'
A
B
C
A
B
C
A
B
C
[anthony@aguevara ~]$
等等。
文件(文件中没有换行符):
[anthony@aguevara ~]$ cat temp
A
B
C
[anthony@aguevara ~]$