给定一个数字列表,如果行号在数字列表中,则生成带有单个X的行,否则生成一个下划线。
输入:
2
3
5输出
_
X
X
_
X输入总是排序的。我需要它是一个短的鞭子剪,最好是一个不错的衬里。
背景
我对VIM做了一个小的扩展来标记一些线。VIM输入是来自grep -n <pattern> <input> | cut -f1 -d: (或具有类似输出的其他命令)的输出。我需要生成行,以便稍后在VIM中显示它们。
发布于 2013-05-30 10:01:35
使用sed生成sed脚本,以便sed在seq的输出上使用:
#! /bin/bash
input=PATH/TO/INPUT/FILE
seq 1 $(tail -n1 $input) | sed -n -f <(sed -e 's/$/{cX\nb}/;$ac_' $input)发布于 2013-05-30 11:00:29
awk:
printf "%d\n" 2 3 5 |
awk '{x[$1]} END {for(i=1; i<=$1; i++) print (i in x) ? "X" : "_"}'在结束块中,我使用最后一行读取的$1。如您所示,这将是最大数目。
发布于 2013-05-30 09:51:49
非常丑陋和低效的解决方案,但我现在能想到的最短的解决方案;)
假设您在一个名为test.txt的文件中有数字
for i in $(seq $(tail -n 1 test.txt)); do grep -q "^$i$" test.txt && echo X || echo _; donehttps://stackoverflow.com/questions/16832423
复制相似问题