gpt4 book ai didi

linux - 将参数从 shell 脚本传递给 awk

转载 作者:太空宇宙 更新时间:2023-11-04 09:02:17 25 4
gpt4 key购买 nike

我想按行数拆分我的文本文件

GenTextFile.txt 有 3000 行我想分割成

GenText_Output_1.txt >> 1000 行(第 1 - 1000 行)

GenText_Output_2.txt >> 1000 行(第 1001 - 2000 行)

GenText_Output_3.txt >> 1000 行(第 2001 - 3000 行)

从控制台获取3个参数输入分别是输入名称、输出名称、要拆分的行数

但是执行的时候出现问题

/devhome/See/Split_file > ./shell_call_awk.sh GenTextFile.txt GenText_Output  1000
awk: syntax error near line 1
awk: bailing out near line 1
awk: can't open in_name

我做错了什么吗?

-- 这里是我的代码 --

#!/bin/ksh

#echo "input name : $1"
#echo "output name : $2"
#echo "line split : $3"

input_name=$1
output_name=$2
line_split=$3

awk -v "in_name=$input_name" -v "out_name=$output_name" -v "line=$line_split"
awk 'NR%line==1{x=++i;}{print > out_name"_"x".txt"}' in_name

exit 1;

谢谢。

最佳答案

您只需要在一个 awk 命令中完成,而不是两个单独的命令。并且输入文件不需要是 awk 变量,它只是一个命令行参数。

awk -v "out_name=$output_name" -v "line=$line_split" 'NR%line==1{x=++i;}{print > (out_name"_"x".txt")}' "$input_name"

你也可以使用split命令(这需要GNU coreutils的版本):

split --numeric-suffixes --lines=$line_split "$input_name" "$output_name"_

关于linux - 将参数从 shell 脚本传递给 awk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18886223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com