我有两个文件'name.txt'和'extensionv2.txt',他们都在同一个文件夹.
两者具有相似的行数。
我想同时从两个文件中获取 * 第n行 *(变量行)到命名的ex1
和nm
变量中。
所以我创建了一个 while 循环。
一切正常,但我无法使用sed
获得第n行。
如何使用shell脚本实现此操作?
下面是我的.sh文件:
m=$(wc -l name.txt)
echo "m = $m"
t5="name.txt"
j=${m//$t5/}
echo "j = $j"
k=1
while [ $j -ge $k ]
do
echo $j
ex1=$(sed -n "$j{p;m}" extensionv2.txt) # Print a variable line in file
nm=$(sed -n "$j{p;m}" name.txt)
echo "ex1 = $ex1"
echo "nm = $nm"
#v=echo "'$nm.$ex1'"
j=$(($j-1))
done
我试过了,但我不知道怎么把它写进我的代码里...
input="name.txt"
while IFS= read -r line
do
echo "$line"
done < "$input"
3条答案
按热度按时间6jjcrrmo1#
awk
:要将输出保存在变量中,请执行以下操作:
2o7dmzc52#
听起来你可能正在寻找类似以下的东西(未经测试,并使用GNU awk for
ENDFILE
,nextfile
and"/dev/stderr"
):如果文件的行数少于
-v n=
中指定的目标行数,上面的代码将向stderr打印一条错误消息,并以失败状态退出。vaj7vani3#
我能想到的最快的方法是使用
nextfile
来加快速度,并将FS
设置为\n
,这样就不会浪费时间拆分不需要的字段。