具有可变参数的Unix脚本
因此,我正在编写一个脚本,它将获取多个文件,比较它们,然后输出不同的记录 脚本对于3个参数(3个文件)运行良好,但是我很难改变参数 考虑脚本名为Test 如果我写:具有可变参数的Unix脚本,unix,awk,Unix,Awk,因此,我正在编写一个脚本,它将获取多个文件,比较它们,然后输出不同的记录 脚本对于3个参数(3个文件)运行良好,但是我很难改变参数 考虑脚本名为Test 如果我写:test1.txt 2.txt, 脚本将知道我有2个输入,这是2个文件,并将比较它们,给我一个输出 此外,如果我写test1.txt 2.txt 3.txt, 脚本将知道我有3个输入,即3个文件,比较它们并给我一个输出 该脚本现在具有以下命令: awk 'NR>2' ${1} | awk '{print $NF "\r"}' &
test1.txt 2.txt
,
脚本将知道我有2个输入,这是2个文件,并将比较它们,给我一个输出
此外,如果我写test1.txt 2.txt 3.txt
,
脚本将知道我有3个输入,即3个文件,比较它们并给我一个输出
该脚本现在具有以下命令:
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个文件
我知道我可以用循环来解决这个问题,但我对这种语言不熟悉,也不太熟悉语法
感谢您的帮助:)使用此:
x=1
for i in "$@"
do
awk 'NR>2' $i | awk '{print $NF "\r"}' > N$x
x=$(($x+1))
done
$@
:输入参数列表使用以下选项:
x=1
for i in "$@"
do
awk 'NR>2' $i | awk '{print $NF "\r"}' > N$x
x=$(($x+1))
done
$@
:输入参数列表使用以下选项:
x=1
for i in "$@"
do
awk 'NR>2' $i | awk '{print $NF "\r"}' > N$x
x=$(($x+1))
done
$@
:输入参数列表使用以下选项:
x=1
for i in "$@"
do
awk 'NR>2' $i | awk '{print $NF "\r"}' > N$x
x=$(($x+1))
done
$@
:输入参数列表您的awk命令可以组合使用:awk'NR>2{print$NF'\r'''1'>N1
更好的是,使用单个awk命令来处理所有文件:
awk '
FNR == 1 {output = "N" ++count}
FNR > 2 {print $NF "\r" > output}
' "$@"
“一个awk来统治它们”您的awk命令可以组合使用:
awk'NR>2{print$NF“\r”}'$1>N1
更好的是,使用单个awk命令来处理所有文件:
awk '
FNR == 1 {output = "N" ++count}
FNR > 2 {print $NF "\r" > output}
' "$@"
“一个awk来统治它们”您的awk命令可以组合使用:
awk'NR>2{print$NF“\r”}'$1>N1
更好的是,使用单个awk命令来处理所有文件:
awk '
FNR == 1 {output = "N" ++count}
FNR > 2 {print $NF "\r" > output}
' "$@"
“一个awk来统治它们”您的awk命令可以组合使用:
awk'NR>2{print$NF“\r”}'$1>N1
更好的是,使用单个awk命令来处理所有文件:
awk '
FNR == 1 {output = "N" ++count}
FNR > 2 {print $NF "\r" > output}
' "$@"
“一个awk来统治他们所有人”很好的简短回答!请注意,递增的
x
也可以编写((x++)
,这是一种较短的语法,所有程序员都更容易记住:)这是错误的,但很容易修复。为了使引用的参数正常工作,您必须在$@
周围使用双引号。@tripleee的建议是,引用“$@”
——这将打破您第一次使用带有空格的文件名。回答得很好!请注意,递增的x
也可以编写((x++)
,这是一种较短的语法,所有程序员都更容易记住:)这是错误的,但很容易修复。为了使引用的参数正常工作,您必须在$@
周围使用双引号。@tripleee的建议是,引用“$@”
——这将打破您第一次使用带有空格的文件名。回答得很好!请注意,递增的x
也可以编写((x++)
,这是一种较短的语法,所有程序员都更容易记住:)这是错误的,但很容易修复。为了使引用的参数正常工作,您必须在$@
周围使用双引号。@tripleee的建议是,引用“$@”
——这将打破您第一次使用带有空格的文件名。回答得很好!请注意,递增的x
也可以编写((x++)
,这是一种较短的语法,所有程序员都更容易记住:)这是错误的,但很容易修复。为了使引用的参数正常工作,您必须在$@
周围使用双引号。@tripleee建议,并引用“$@”
——这将在您第一次使用带有空格的文件名时中断。