ali*_*isa 4 scripting text-processing
我在 Linux 机器上有一个文件words.txt,包含以下几行。如何重复每个字符串user、apple和banana,并向它们附加 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)
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地方,但是这里由于我们将字段分隔符定义为换行符,所以不能有第二个字段,或者换句话说,两个文件的每一行的第二个字段都是空的,所以我们最终将所有东西结合在一起。