paste(1)

| No Comments | No TrackBacks |

这是一个处理文本的命令,之前一直没怎么用过,最近看 freebsd-update 的时候才知道有这么个玩意。

假设用 piconv 转换了一批 .txt 文件,并将其命名为对应的 .txt.new:

ls *.srt | \
awk -F \\r '{ 
print "piconv -f gbk -t utf8 \"" $1 "\" > \"" $1 ".new\""
}'  | sh -x

(这个是个简单的例子,只考虑有空格,而没有考虑文件名中有换行、引号等情况;换行是为了排版方便)。

然后,想要把所有的 .txt.new 改名为 .txt,此时便可以用 paste。

首先生成两个列表,old.list 和 new.list,分别包括转换前后的文件名:

find . -name '*.txt' | sed -e s/^/\"/g -e s/\$/\"/g | sort > old.list
find . -name '*.txt.new' | sed -e s/^/\"/g -e s/\$/\"/g | sort > new.list

然后用paste:

paste new.list old.list | sed -e s/^/mv\ /g | sh -x

是的,你应该发现,用和第一步类似的方法也可以让 awk 干一样的事情。这里只是展示一下 paste(1) 的基本用法。

No TrackBacks

TrackBack URL: https://blog.delphij.net/mt/mt-tb.cgi/1935

Leave a comment

Monthly Archives

Pages

OpenID accepted here Learn more about OpenID
Powered by Movable Type 5.2.3