假设我正在编写一个shell脚本foo.bash
,以用这样的逗号连接test/*.txt
的内容:
> cat test/x.txt
a b c
> cat test/y.txt
1 2 3
> foo.bash test
a b c,
1 2 3
您将如何编写这样的脚本?
答案 0 :(得分:1)
那
for file in /tmp/test/*.txt; do
echo -n "$(cat "$file"),"
done | sed 's/.$//'
或者也许
for file in /tmp/test/*.txt; do
sed 's/$/,/' "$file"
done | sed 's/.$//'
答案 1 :(得分:1)
请尝试以下操作(如果要连接文件行,请用逗号逐行连接)。
paste -d, *.txt
EDIT2: :要用,
连接所有.txt文件内容,请尝试执行一次(需要GNU awk
)。
awk 'ENDFILE{print ","} 1' *.txt | sed '$d'
答案 2 :(得分:0)
您可以使用regex来实现它。下面的命令获取每个文件的内容,并将其附加在文件名($ARGV
)之后。
$ grep -ER '*'
a.txt:a
b.txt:b
c.txt:c
$ perl -pe 's/^(.*)\n$/$ARGV:\1,/;' * > file.txt
$ cat file.txt
a.txt:a,b.txt:b,c.txt:c,