我有一个像这样的文本文件。
Line1
Line2
Line3
Line4
Line5 etc.
我想添加两个字符' a'和' b'在每一行的末尾交替。输出应该如下:
Line1/a
Line2/b
Line3/a
Line4/b ..
我的想法是
if (Linenumber %2 == 0) {
add a;
}
else
{
add b
}
我正在尝试使用awk
或bash
来实现此功能。欢迎任何其他建议。
答案 0 :(得分:2)
awk '{ printf "%s/%s\n", $0, ((NR % 2) == 1) ? "a" : "b" }' text.file
甚至:
awk 'BEGIN { s[1] = "a"; s[0] = "b" }
{ printf $0 "/" a[NR % 2]}' text.file
答案 1 :(得分:1)
awk 'NR % 2 == 0 {print $0"/a"} NR % 2 == 1 {print $0"/b"}' afile
答案 2 :(得分:1)
$ awk '{print $0"/"(NR%2?"a":"b")}' file
Line1/a
Line2/b
Line3/a
Line4/b
Line5/a
答案 3 :(得分:0)
一个有趣的纯Bash可能性:
mapfile -t ary < file
((n=${#ary[@]}))
printf '%s/a\n%s/b\n' "${ary[@]::(n/2)*2}"
((n%2)) && printf '%s/a\n' "${ary[@]: -1}"
这会将整个文件淹没在内存中,然后使用printf
打印内容,同时在每行末尾附加/a
或/b
。奇数行的情况得到妥善处理。