-1

我需要一些关于 bash 的指导,它将获取一个单词列表并将每个单词附加到另一个列表中的单词:

清单 1

1
2
3

清单 2

!
@
#

新名单 (一)

1!
2!
3!

(乙)

1@
2@
3@

(C)

3!
3@
3#

我是如何开始的:(我想我应该注意我放弃了两个输入文件,而是使用了一个计数器功能。)

#!/bash/bin
CT=1000 
LIMIT=10000 
while [ "$CT" -lt "$LIMIT" ] 
do 
    echo $CT 
    sed -e 's/$/'$CT'/' -i 'INPUTFILE.txt' 
let "CT +=1" 
done
4

1 回答 1

0

假设您想要编号的输出文件,请尝试在循环内运行计数器。

#!/bin/bash
i=0
while read -r suffix; do
   let i++
   sed "s/$/$suffix/" INPUTFILE.txt >file$i
done <SUFFIXFILE.txt

请注意,这sed -i将就地操作原始输入文件。你不想要那个;您希望在新文件中输出。所以我们去掉这个-i选项并使用 shell 的重定向功能来指示将标准输出发送到哪里。

如果要枚举目标文件名,那就有点棘手了。一种解决方案是将目标文件名添加到后缀文件

!        A
@        B
#        C

然后在循环中读取两个标记:

while read -r suffix outputfile; do
    sed "s/$/$suffix/" INPUTFILE.txt >"$outputfile"
done <SUFFIXLIST.txt

或者,如果您想将此信息嵌入到您的脚本中,请使用此处的文档:

while read -r suffix outputfile; do
    sed "s/$/$suffix/" INPUTFILE.txt >"$outputfile"
done <<____HERE
    !        A
    @        B
    #        C
____HERE

(唯一特定于 Bash 的构造let用于算术,因此后两个不使用该构造的脚本可以/bin/sh代替 Bash 运行。)

于 2014-12-10T05:46:21.250 回答