首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有可变参数的Unix脚本

具有可变参数的Unix脚本
EN

Stack Overflow用户
提问于 2014-07-23 09:03:08
回答 2查看 65关注 0票数 0

所以我编写了一个脚本,它需要几个文件,比较它们,然后输出不同的记录。

该脚本对3个参数(3个文件)运行良好,但我很难使参数变化。

假设脚本名为Test。

如果我编写:Test 1.txt 2.txt,脚本将知道我有2个输入,即2个文件,并将它们进行比较并给出输出。

此外,如果我编写Test 1.txt 2.txt 3.txt,脚本将知道我有3个输入,即3个文件,比较它们并给出输出。

该脚本现在有以下命令:

代码语言:javascript
复制
awk 'NR>2' ${1} | awk '{print $NF "\r"}' > N1
awk 'NR>2' ${2} | awk '{print $NF "\r"}' > N2
awk 'NR>2' ${3} | awk '{print $NF "\r"}' > N3

这对3个文件很好,但问题是,有时我有2个文件,有时我有4个文件。

我知道我可以用循环来修复这个问题,但是我对这种语言并不熟悉,对语法也不太熟悉。

(谢谢你的帮助:)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-23 10:03:18

用这个:

代码语言:javascript
复制
x=1
for i in "$@"
do
  awk 'NR>2' $i | awk '{print $NF "\r"}' > N$x
  x=$(($x+1))
done

$@:输入参数列表

票数 2
EN

Stack Overflow用户

发布于 2014-07-23 10:54:41

您的awk命令可以组合在一起:awk 'NR>2 {print $NF "\r"}' "$1" > N1

更好的是,只需使用一个awk命令来处理所有文件:

代码语言:javascript
复制
awk '
    FNR == 1 {output = "N" ++count}
    FNR > 2  {print $NF "\r" > output}
' "$@"

“一只鹰来统治他们所有人”

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24906235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档