我想知道是否有一些可用的内置命令可以从输入中打印第N列。例如。 awk '{print $2}'
或cut...
当我想通过管道输出运行它时,通过ssh
运行它会让生活更轻松(引用它总是一个地狱),当然它会让生活更轻松。
我当前有100个限制的黑客是:
function _printcol(){
while read data; do
[ -z "$fields" ] && fields=`for num in "$@"; do echo -n "\"\t\",\\$$num"; done`
echo $data | awk "{ print $fields }"
done
}
alias printcol=_printcol
ls -ltr | printcol 9
ls -ltr | printcol 1 9
我想知道是否有人已经实施了它。我希望它是内置的,或尽可能广泛的(如多个库存发行版)或最坏的情况下可以轻松安装(如yum,apt,......)。
答案 0 :(得分:2)
重写
printcol() {
awk -v "fields=$*" '
BEGIN { n = split(fields, f) }
{
for (i=1; i<=n; i++) {
printf "%s%s", $(f[i]), OFS
}
print ""
}
'
}
seq 50 | pr -T5 | printcol 2 4 5
注意:
答案 1 :(得分:1)
你想要一些易于安装的东西。只需将以下行放在~/.bashrc
文件中:
printcol() { fields=$(printf '$%i,' "$@"); awk -v OFS='\t' "{ print ${fields%%,} }"; }
像你一样调用它:
ls -ltr | printcol 1 9