按升序在文本的每一行前添加一个字母
Prepend a letter to each line of a text, in ascending order
bash 脚本将其输出(文件列表)写入文件。
file.txt:
/home/user/dir1/dir2/foo00
/home/user/dir1/dir2/foo01
/home/user/dir1/dir2/foo02
我想在每一行前加上一个字母,从 a 开始,到达 z 之后,继续 aa,ab…
最后,输出应该是这样的
file.txt:
a /home/user/dir1/dir2/foo00
b /home/user/dir1/dir2/foo01
c /home/user/dir1/dir2/foo02
...
z /home/user/dir1/dir2/foo26
aa /home/user/dir1/dir2/foo27
作为 shell 脚本的新手,我不知道哪个工具可能合适。我所以我的问题肯定有些不精确。
如果可能的话,我更喜欢 bash 内置插件。
如何进行这个操作?
这不是 bash,但是 perl 的内置递增可以做你想做的事:
#!/usr/bin/env perl
my $pfx = 'a';
print $pfx++, ' ', $_ while (<>);
此脚本从 stdin 读取并生成您寻求的输出。
仅使用 bash 内置函数,没有子 shell:
prefixes=({a..z} {a..z}{a..z} {a..z}{a..z}{a..z})
i=0
while IFS= read -r line
do
printf "%s %s\n" "${prefixes[i++]}" "$line"
done < file.txt
bash 脚本将其输出(文件列表)写入文件。
file.txt:
/home/user/dir1/dir2/foo00
/home/user/dir1/dir2/foo01
/home/user/dir1/dir2/foo02
我想在每一行前加上一个字母,从 a 开始,到达 z 之后,继续 aa,ab…
最后,输出应该是这样的
file.txt:
a /home/user/dir1/dir2/foo00
b /home/user/dir1/dir2/foo01
c /home/user/dir1/dir2/foo02
...
z /home/user/dir1/dir2/foo26
aa /home/user/dir1/dir2/foo27
作为 shell 脚本的新手,我不知道哪个工具可能合适。我所以我的问题肯定有些不精确。
如果可能的话,我更喜欢 bash 内置插件。
如何进行这个操作?
这不是 bash,但是 perl 的内置递增可以做你想做的事:
#!/usr/bin/env perl
my $pfx = 'a';
print $pfx++, ' ', $_ while (<>);
此脚本从 stdin 读取并生成您寻求的输出。
仅使用 bash 内置函数,没有子 shell:
prefixes=({a..z} {a..z}{a..z} {a..z}{a..z}{a..z})
i=0
while IFS= read -r line
do
printf "%s %s\n" "${prefixes[i++]}" "$line"
done < file.txt