我有一个文件 test.txt,其中几行有单个逗号,如下所示。
$ cat test.txt
ABCD
Test,plan
Sample
Working
Tester,Developer
Learn
Teach
Study
Coding
Stack,exchange
需要输出如下:
ABCD
ABCD
Sample
Working
Working
Learn
Teach
Study
Coding
Coding
我无法找到使用 unix 命令打印上述内容的方法,请让我知道如何处理此逗号行搜索并将其替换为上面的行。
尝试如下搜索不确定是否替换:
#Searching comma
sed -i 's/,/replace_above_line/g' test.txt
我想用文件中包含逗号的前一行进行全局替换。
答案1
对于sed
,您需要在模式空间中保留两行 - 例如
sed -i -e '$!N;s/\(.*\)\n.*,.*/\1\n\1/' -e 'P;D' file
或者,使用ed
,您可以标记逗号行 ( g/,/-1
) 之前的每一行,然后复制它们 ( t
) 并返回并删除原始行 ( -1d
):
$ ed -s file
g/,/-1t\
-1d
wq
或作为单行:
printf '%s\n' g/,/-1t\\ -1d wq | ed -s file