Bash 是否用shell脚本中另一个文本文件的值替换特定行?
我有一个文件,是8行单星号。我有4个文本文件,每个文件中有两行数字。我想为每个文本文件创建一个新文件,其中行号I+2和I+3由文本文件的内容替换。例如: 文件1将是:Bash 是否用shell脚本中另一个文本文件的值替换特定行?,bash,shell,text,Bash,Shell,Text,我有一个文件,是8行单星号。我有4个文本文件,每个文件中有两行数字。我想为每个文本文件创建一个新文件,其中行号I+2和I+3由文本文件的内容替换。例如: 文件1将是: 1 5 7 8 2 4 5 6 我想将其转换为: 1 5 7 8 2 4 5 6 * * * * * * 文件2将从以下内容转换: 6 5 6 7 8 9 0 9 致: 有没有一种方法可以遍历目录中的文本文件,像上面那样转换每个文本文件 谢谢 更新:也许这可以更好地解释: 基本
1 5 7 8
2 4 5 6
我想将其转换为:
1 5 7 8
2 4 5 6
*
*
*
*
*
*
文件2将从以下内容转换:
6 5 6 7
8 9 0 9
致:
有没有一种方法可以遍历目录中的文本文件,像上面那样转换每个文本文件
谢谢
更新:也许这可以更好地解释:
基本上我有n个文本文件,每个文件只有两行数字。我想在文本文件中循环,将每个文本文件转换为另一个文本文件,其中有n x 2行,第一个文本文件的值占据第1行和第2行,其余行为*。第二个文本文件将有n x 2行,但第三行和第四行是文件值,其余为*。第三个文件有nx2行,第6行和第7行用其值填充,其余为*,依此类推 不知道如何在shell中轻松实现这一点,但GNU awk有一些特性使其非常简单 parse.awk
BEGINFILE{
outfile=ARGV[argid]“.new”
对于(i=1;i输出文件
}
{打印>输出文件}
结束文件{
对于(i=1;i输出文件
关闭(输出文件)
}
按如下方式运行:
gawk -f parse.awk File*
解释
ARGV是一个数组,包含输入文件的名称。argid是当前正在处理的文件的ARGV索引,ARGC是ARGV的长度,即给定的参数数
BEGINFILE和ENDFILE块是在开始/完成文件处理时执行的,因此在您的情况下它们是方便的钩子。不知道如何在shell中轻松完成这一点,但GNU awk有一些特性使其非常简单 parse.awk
BEGINFILE{
outfile=ARGV[argid]“.new”
对于(i=1;i输出文件
}
{打印>输出文件}
结束文件{
对于(i=1;i输出文件
关闭(输出文件)
}
按如下方式运行:
gawk -f parse.awk File*
解释
ARGV是一个数组,包含输入文件的名称。argid是当前正在处理的文件的ARGV索引,ARGC是ARGV的长度,即给定的参数数
BEGINFILE和ENDFILE块在开始/完成文件处理时执行,因此在您的情况下它们是方便的挂钩。
bash
解决方案:
n=8
i=0
for file in * ; do
{
for ((a=0 ; a<n ; a++)) ; do
((a==i)) && cat "$file"
echo $'*\n*'
done
} > "$file".out
let i++
done
n=8
i=0
要在*中归档;请执行以下操作
{
for((a=0;a“$file.out
让我++
完成
bash
解决方案:
n=8
i=0
for file in * ; do
{
for ((a=0 ; a<n ; a++)) ; do
((a==i)) && cat "$file"
echo $'*\n*'
done
} > "$file".out
let i++
done
n=8
i=0
要在*中归档;请执行以下操作
{
for((a=0;a“$file.out
让我++
完成
什么是i
?您的意思是其中我表示第i个文件
和行号(i*2)-1和(i*2)被…的内容替换。
是否总是正好有4个带数字的文本文件,并且总是只有一个带8行单星号的文件?基本上,我有n个文本文件,每个文件只有两行数字。我想循环浏览文本文件,将每个文本文件转换为另一个文本文件,其中有n x 2个数字行,第一个文本文件的值占据第1行和第2行,其余的行是*。第二个文本文件将有n x 2行,但第三行和第四行是文件值,其余的行是*。第三个文件有n x 2行,第六行和第七行填充了它的值,其余的行是*,依此类推。是的,我应该是rE表示文件编号;我上一篇文章有助于更好地解释它吗?什么是i
?你是说其中我表示第i个文件
和行编号(i*2)-1和(i*2)被…的内容替换。
是否总是正好有4个带数字的文本文件,并且总是只有一个带8行单星号的文件?基本上,我有n个文本文件,每个文件只有两行数字。我想循环浏览文本文件,将每个文本文件转换为另一个文本文件,其中有n x 2个数字行,第一个文本文件的值占据第1行和第2行,其余的行是*。第二个文本文件将有n x 2行,但第三行和第四行是文件值,其余的行是*。第三个文件有n x 2行,第六行和第七行填充了它的值,其余的行是*,依此类推。是的,我应该是rE表示文件号;我上一篇文章解释得更好了吗?太棒了,去试试吧。你如何指定*的基础文件数?现在,如果我有两个指定为参数的文本文件,并使用>将其输入到一个新文件中,我会得到一个文件,它只是两个文件的串联。@user1566200:U更新。它不再是一行程序,但仍然非常简单。太棒了,去试试吧。你如何指定*的基础文件数?现在,如果我有两个指定为参数的文本文件,并使用>将其输入到一个新文件中,我会得到一个文件,它只是两个文件的串联。@user156620:更新。它不再是一行了,但仍然很简单。