我现在使用下面的命令来检查一个csv文件的重复项,在Fish shell中运行它就可以了。所以现在我想把它保存为一个别名,但是它会从print中去掉变量。
使用命令。
awk -F ',' '{print $2 $3}' Data.csv | sort -n | uniq -cd | sort -n
返回别名
awk -F ',' '{print }' Data.csv | sort -n | uniq -cd | sort -n
显然,这不会检查文件中的任何列。那么变量调用如何存储在别名函数中呢?
我下了命令
alias --save data="awk -F ',' '{print $2 $3}' Data.csv | sort -n | uniq -cd | sort -n"
1条答案
按热度按时间5n0oy7gb1#
和其他shell一样,Fish用双引号展开变量。
那是
"awk
吗?那是双引号,这也是为什么$2
和$3
会像交互式fish会话中的变量一样被着色。所以它运行
alias
,但在此之前,它替换了$2
和$3
的值,因为它们没有设置,所以它最终为空,所以您得到print
。您需要对变量扩展的
$
进行转义,或者使用单引号,在后一种情况下,您需要对awk调用的'
引号进行转义。所以要么
或
老实说,就帮你自己一个忙,让它成为一个正常的功能:
然后运行
funcsave data
,这不仅简化了引用,而且允许您将$argv
放在任何您想要的位置,因此您可以例如将Data.csv
替换为$argv
,并将其运行为data Data.csv
或data Data-2.csv
或其他名称。