首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用bash和sed

使用bash和sed
EN

Stack Overflow用户
提问于 2011-01-12 12:12:28
回答 3查看 309关注 0票数 1

好吧,我在这方面不是很在行,但是我有一个bash脚本来挑选一个随机数,然后使用sed来读取文件中的行。它不工作,我一定是做错了什么。有人能纠正我的代码吗?

我希望代码从每个文件中提取行(随机数),然后将其输出为单个字符串(中间有空格)。

代码语言:javascript
运行
复制
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
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-12 12:17:12

下面的脚本将使用相同的随机选择的数字从您指定的4个输入文件中获取该行,并将这些行连接到一个名为$outstring的变量中。

代码语言:javascript
运行
复制
#!/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循环中即可。

票数 0
EN

Stack Overflow用户

发布于 2011-01-12 12:17:55

您可能需要在sed命令中使用$NUMBER,而不仅仅是NUMBER (如果其他文本紧挨着它,则使用${NUMBER} )。示例:

代码语言:javascript
运行
复制
sed -n "${NUMBER}p" /Users/user/Desktop/Street.txt
票数 1
EN

Stack Overflow用户

发布于 2011-01-12 13:36:32

这样做的好处是可以从整个文件中进行选择,而不是只从前100行中进行选择。它将从每个文件中选择不同的行。

代码语言:javascript
运行
复制
for f in Street City State Zip
do
    printf '%s ' "$(shuf -n 1 "/Users/user/Desktop/$f.txt")"
done
printf '\n'
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4665270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档