我需要在bash上有一些方向,它会获取一个单词列表并将每个单词附加到另一个列表中的单词:
列表1
1
2
3
列表2
!
@
#
新列表 的 (A)
1!
2!
3!
(B)
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
答案 0 :(得分: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运行。)