awk 或 sed 显示增量奇数行和偶数行

awk 或 sed 显示增量奇数行和偶数行

需要帮助将文本文件中的奇数行和偶数行增量显示到屏幕上。

文本文件

10101 
AsPO4IF+tGU=
01010 
WvTzUYrxvXY=
00101
CfZzsDDKW98=

卡在下面的脚本中。

result=Textfile
while IFS='' read -r line || [[ -n "$line" ]];
echo "`awk or sed odd line $result`" "`awk or sed even line $result`"
done < "$result"

需要输出

"AsPO4IF+tGU=" "10101" 

"WvTzUYrxvXY=" "01010" 

"CfZzsDDKW98=" "00101" 

一旦文本文件中的 EOF 到达,则停止脚本。

谢谢你的时间。

答案1

您不需要循环文件的行,awk这正是这方面的专家:

awk '
    NR%2 != 0 {last=$0}
    NR%2 == 0 {printf "\"%s\" \"%s\"\n",$0,last}
' file

答案2

sed也不需要外部循环:

sed -E '$!N;s/(.*)\n(.*)/"\2" "\1"/' file
  • -E就是使用扩展的正则表达式,这样更()容易阅读
  • $!N如果存在未配对的行,则始终连接 ( N) 模式空间中除最后一行 ( ) 之外的两行$!
  • s/(.*)\n(.*)/"\2" "\1"/翻转两行,用空格替换换行符并添加双引号

答案3

我已经通过以下方法完成了

命令:

sed "N;s/\n/ /g" filename | awk '{print $2,$1}'| sed 's/^/"/g'| sed 's/$/"/g'| sed 's/=/"&"/g'

输出

"AsPO4IF+tGU"=" 10101"
"WvTzUYrxvXY"=" 01010"
"CfZzsDDKW98"=" 00101"

相关内容