好吧,我在这方面不是很在行,但是我有一个bash脚本来挑选一个随机数,然后使用sed来读取文件中的行。它不工作,我一定是做错了什么。有人能纠正我的代码吗?
我希望代码从每个文件中提取行(随机数),然后将其输出为单个字符串(中间有空格)。
NUMBER=$[ ( $RANDOM % 100 ) + 1 ]
sed -n NUMBER'p' /Users/user/Desktop/Street.txt
sed -n NUMBER'p' /Users/user/Desktop/City.txt
sed -n NUMBER'p' /Users/user/Desktop/State.txt
sed -n NUMBER'p' /Users/user/Desktop/Zip.txt发布于 2011-01-12 12:17:12
下面的脚本将使用相同的随机选择的数字从您指定的4个输入文件中获取该行,并将这些行连接到一个名为$outstring的变量中。
#!/bin/bash
NUMBER=$(((RANDOM % 100)+1))
for file in Street City State Zip; do
outstring+="$(sed -n "${NUMBER}p" "./${file}.txt") "
done
echo $outstring注意:如果您想(潜在地)从4个输入文件中获得不同的行号,那么只需将NUMBER=语句放入for循环中即可。
发布于 2011-01-12 12:17:55
您可能需要在sed命令中使用$NUMBER,而不仅仅是NUMBER (如果其他文本紧挨着它,则使用${NUMBER} )。示例:
sed -n "${NUMBER}p" /Users/user/Desktop/Street.txt发布于 2011-01-12 13:36:32
这样做的好处是可以从整个文件中进行选择,而不是只从前100行中进行选择。它将从每个文件中选择不同的行。
for f in Street City State Zip
do
printf '%s ' "$(shuf -n 1 "/Users/user/Desktop/$f.txt")"
done
printf '\n'https://stackoverflow.com/questions/4665270
复制相似问题