需要搜索文件中包含逗号的行并希望将其替换为其前行

需要搜索文件中包含逗号的行并希望将其替换为其前行

我有一个文件 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

相关内容