我有两个文件file1和file2
file1的内容是
Hello
how
are you
when can i meet you
film??
Run Code Online (Sandbox Code Playgroud)
file2的内容是
Hello
how
are you
darling
when can i meet you
Run Code Online (Sandbox Code Playgroud)
我想生成一个文件,它是两个文件的组合
Hello
how
are you
darling
when can i meet you
film??
Run Code Online (Sandbox Code Playgroud)
注意:在file1最后一个文件中应该忽略第二行中的空格是否有任何内置函数在C或Linux中执行上面的工作或者是否可以编写脚本来执行此操作?
这是使用的一种方法awk:
awk '{ gsub(/^[ \t]+|[ \t]+$/,"") } !a[$0]++' file2 file1
Run Code Online (Sandbox Code Playgroud)
结果:
Hello
how
are you
darling
when can i meet you
film??
Run Code Online (Sandbox Code Playgroud)
编辑:
问题在于:
awk '{ $1=$1 } !a[$0]++' file2 file1
Run Code Online (Sandbox Code Playgroud)
是的,虽然它对于这个简单的示例效果很好,但它会将相似的行视为同一件事,因为它不仅删除前导和滞后空格,而且还会删除字段之间的额外空格。例如,如果file1包含:
Hello
how
are you
when can i meet you
film??
Run Code Online (Sandbox Code Playgroud)
这俩:
when can i meet you
Run Code Online (Sandbox Code Playgroud)
和:
when can i meet you
Run Code Online (Sandbox Code Playgroud)
线将被视为同一事物。这可能是期望的结果,但根据您的问题,我认为最好按照第一个命令简单地去除前导和滞后空格。HTH。