use*_*178 2 linux sed awk text-processing
我有两个文件,每行中有相同数量的单词和列字段。我想一个字一个字地附加这两个文件。例如:
文件 1:
A1 B1 C1
D1 E1 B1 C1
Run Code Online (Sandbox Code Playgroud)
文件2:
A2 B2 C2
D2 E2 B2 C2
Run Code Online (Sandbox Code Playgroud)
输出应该是(应该尊重字数):
A1_A2 B1_B2 C1_C2
D1_D2 E1_E2 B1_B2 C1_C2
Run Code Online (Sandbox Code Playgroud)
该awk的解决方案:
awk '{
getline a <"file2"
split(a,A)
for(i=1;i<=NF;i++)
printf("%s_%s ", $i, A[i])
print ""
}' file1
Run Code Online (Sandbox Code Playgroud)
粘贴+ sed:
paste file1 file2 |
sed '
:a
s/\(\(^\|\s\)[^_[:blank:]]\+\b\)\s*\(.*\t\)\(\S\+\)\s*/\1_\4 \3/
ta
s/\s*$//
'
Run Code Online (Sandbox Code Playgroud)
bash 循环:
exec 3<file1 4<file2
while read -u 3 a ; read -u 4 b
do
echo $(paste -d_ <(printf '%s\n' $a) <(printf '%s\n' $b))
done
Run Code Online (Sandbox Code Playgroud)