将文件中的行创建为行

时间:2013-12-06 17:41:55

标签: linux unix

我的文件如下;

roger
"supplier"
anger
"easter"
robin
"badguy"
sweety
"i like you"
goldy
"I hate you"

我需要将此文件转换为类似

的内容
roger|supplier
anger|easter
robin|badguy
sweety|i like you
goldy|I hate you

请帮忙,我是通过一段时间的循环将它们读入2个不同的文件,然后连接文件。我知道这不是一个好主意,因此可以发布一些建议。

2 个答案:

答案 0 :(得分:2)

awk的一种方式:

$ awk 'NR%2{a=$0;next}{print a,$2}' FS='"' OFS='|' file
roger|supplier
anger|easter
robin|badguy
sweety|i like you
goldy|I hate you

或略短于xargssed

$ xargs -n2 < file | sed 's/ /|/'
roger|supplier
anger|easter
robin|badguy
sweety|i like you
goldy|I hate you

或只是sed

$ sed '$!N;s/\n/|/;s/"//g' file
roger|supplier
anger|easter
robin|badguy
sweety|i like you
goldy|I hate you

答案 1 :(得分:0)

这是怎么回事?

echo 'roger
"supplier"
anger
"easter"
robin
"badguy"
sweety
"i like you"
goldy
"I hate you"' \
| awk '{
   if (NR%2){
     printf("%s", $0)
   }
   else {
     gsub(/"/,"", $0);printf("|%s\n", $0)
   }
 }'

<强>输出

roger|supplier
anger|easter
robin|badguy
sweety|i like you
goldy|I hate you