我正在尝试将文本文件与文件名一起附加,然后将它们分开。
我已经可以使用tail附加文件,但是不确定这是否是最好的方法。
Discovery status
如何将allFiles拆分回原始文件?
答案 0 :(得分:2)
最隐秘的可能是grep
,因为它会将文件名附加到每一行。
bash$ grep ^ one two three /dev/null
one:first line
one:
one:^ empty line
two:
three:^ look, two only contained one empty line
three:this one contains three lines, too
three:quod erat demonstrandum.
将它们拆回是Awk的一项琐碎任务:
awk -F : '$1 != p { if(p) close(p) }
{ print substr($0,length($1)+1 >$1
p=$1 }' combined.txt
在/dev/null
参数中添加grep
以确保它总是获得比单个文件名更多的参数,这是一个老办法。您当然可以在任何远程现代系统上使用grep -H
来达到相同的效果。
答案 1 :(得分:0)
要分割文件,您可以使用split或csplit实用程序,以加入文件join
如何使用join
?也许像下面这样:
$ cat a.txt
ala
ola
ewa
$ cat b.txt
ula
ewa
$ (echo -e "\n";cat a.txt)|awk 'BEGIN{s=0;}{print NR+s" "$0}'
1
2
3 ala
4 ola
5 ewa
$ (echo -e "\n";cat a.txt)|awk 'BEGIN{s=0;}{print NR+s" "$0}'>a1.txt
$ (cat b.txt;echo -e "\n\n")|awk 'BEGIN{s=0;}{print NR+s" "$0}'
1 ula
2 ewa
3
4
5
$ (cat b.txt;echo -e "\n\n")|awk 'BEGIN{s=0;}{print NR+s" "$0}'>b1.txt
$ join a1.txt b1.txt|awk '{$1="";print}'|sed 's/ //g'
ula
ewa
ala
ola
ewa