Replace sed awk使用模式匹配替换线条
使用awk或sed,在模式匹配后如何替换每条线? 模式总是以S:\和其他形式开始, 我需要从S:\~到结尾的整行显示在空行之前的下一行中 我有这样一个输入:Replace sed awk使用模式匹配替换线条,replace,awk,sed,Replace,Awk,Sed,使用awk或sed,在模式匹配后如何替换每条线? 模式总是以S:\和其他形式开始, 我需要从S:\~到结尾的整行显示在空行之前的下一行中 我有这样一个输入: S:\dir1\subfolder1longsubf abcdefg 1234567 permissions S:\dir2\verylongsub some random string some random string S:\dir3 some random string some random string S:\dir4\s
S:\dir1\subfolder1longsubf
abcdefg
1234567
permissions
S:\dir2\verylongsub
some random string
some random string
S:\dir3
some random string
some random string
S:\dir4\sub2\sub3
some random string
some random string
some random string
S:\dir1\subfolder1longsubf
S:\dir1\subfolder1longsubf
S:\dir1\subfolder1longsubf
S:\dir1\subfolder1longsubf
S:\dir2\verylongsub
S:\dir2\verylongsub
S:\dir2\verylongsub
S:\dir3
S:\dir3
S:\dir3
S:\dir4\sub2\sub3
S:\dir4\sub2\sub3
S:\dir4\sub2\sub3
S:\dir4\sub2\sub3
我需要这样的输出:
S:\dir1\subfolder1longsubf
abcdefg
1234567
permissions
S:\dir2\verylongsub
some random string
some random string
S:\dir3
some random string
some random string
S:\dir4\sub2\sub3
some random string
some random string
some random string
S:\dir1\subfolder1longsubf
S:\dir1\subfolder1longsubf
S:\dir1\subfolder1longsubf
S:\dir1\subfolder1longsubf
S:\dir2\verylongsub
S:\dir2\verylongsub
S:\dir2\verylongsub
S:\dir3
S:\dir3
S:\dir3
S:\dir4\sub2\sub3
S:\dir4\sub2\sub3
S:\dir4\sub2\sub3
S:\dir4\sub2\sub3
我会使用
awk
:
awk '/^S/ {line=$0} {print NF?line:""}' file
这将存储以S
开头的行。然后,它打印存储的值,如果行为空,则打印空行
试验
我会使用
awk
:
awk '/^S/ {line=$0} {print NF?line:""}' file
这将存储以S
开头的行。然后,它打印存储的值,如果行为空,则打印空行
试验
使用GNU时:
sed '/^S:/{h};/^[^S]/{g}' file
使用GNU时:
sed '/^S:/{h};/^[^S]/{g}' file
这假定空行中根本不包含空格。更安全的解决方案是不使用空行:
sed'/^\s*$/b/^S:\\/h;//!g'文件
这假定空行完全不包含空格。更安全的解决方案是不使用空行:sed'/^\s*$/b/^S:\\/h;//!g'文件