Bash:从同一行的文本文件中获取多个值

时间:2016-09-13 12:38:17

标签: bash shell

我有一个每行2个字符串的文本文件,我需要使用这些值进行curl命令

文本文件:

www.example.com 38494740
www.example.org 49347398
www.example.net 94798340

我需要为行创建一个命令curl,例如

curl www.example.com/38494740
curl www.example.org/49347398
curl www.example.net/94798340

我考虑过while,但每行有2个字符串......

更新:

我需要将这些值用作变量,命令也可以这样curl www.exmple.com/foo/38494740

4 个答案:

答案 0 :(得分:2)

awk -v OFS="/" '{$1=$1}1' curl
www.example.com/38494740
www.example.org/49347398
www.example.net/94798340

说明:
 OFS定义输出字段的分隔方式。这里设置为“/”。
{$1=$1}:是要使awk重建记录,以便新的OFS生效 1:是awk打印该行的默认操作。

根据评论:

while read domain sub
do

curl "$domain"/"$sub"


done < curl

答案 1 :(得分:1)

while read hostname number ; do echo "curl ${hostname}/${number}" ; done < inputFile

输出:

curl www.example.com/38494740
curl www.example.org/49347398
curl www.example.net/94798340

答案 2 :(得分:1)

这是完成任务的一种万无一失的方式。

#!/bin/bash

while read -r url port;     # Read the tab-spaced file for the 'url' and 'port'
do
    curl "${url}"/"${port}" # Construct the URL as "url/port" to run curl command on it
done < file

答案 3 :(得分:0)

一个简单的解决方案就是使用tr将所有空格转换为/

tr ' ' '/' < inputfile