如何在 bash 中连接如下单词

ali*_*isa 4 scripting text-processing

我在 Linux 机器上有一个文件words.txt,包含以下几行。如何重复每个字符串userapplebanana,并向它们附加 1 到 4 之间的数字?

user
apple
banana
Run Code Online (Sandbox Code Playgroud)

预期输出:

user1
user2
user3
user4
apple1
apple2
apple3
apple4
banana1
banana2
banana3
banana4

Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法,但只适用于 1 个字符串。

seq 1 4 | awk {'print $0 "user"'}
Run Code Online (Sandbox Code Playgroud)

Sté*_*las 5

awk标准工具箱可能是您最好的选择。

awk -v min=1 -v max=4 -v increment=1 '
  {for (i = min; i <= max; i += increment) print $0 i}' words.txt
Run Code Online (Sandbox Code Playgroud)

使用 GNU 工具,从@JJoao 获取两个文件行的笛卡尔乘积的方法中汲取灵感:

join -t $'\n' -j2 -o1.1,2.1 words.txt <(seq 4) | paste -d '\0' - -
Run Code Online (Sandbox Code Playgroud)

我们在第二个字段上加入words.txt和输出的seq 4地方,但是这里由于我们将字段分隔符定义为换行符,所以不能有第二个字段,或者换句话说,两个文件的每一行的第二个字段都是空的,所以我们最终将所有东西结合在一起。