繁体   English   中英

awk:将第一行转换为第一列,第二行转换为第二列

[英]awk : convert first line to first column and second line to second column

我有一个包含这样的数据的文件:

{
MAG 121/002
Wed Mar 14 00:00:00 2018
MAG 121/003
Wed Mar 14 00:00:00 2018
MAG 121/004
Wed Mar 14 00:00:00 2018
}

我希望输出为:

{
MAG 121/002 | Wed Mar 14 00:00:00 2018
MAG 121/003 | Wed Mar 14 00:00:00 2018
}

等等..任何帮助表示赞赏。

我试过的是:

cat <filename> | awk '{printf "%s" (NR%2==0? RS:FS), $1}'

您能否尝试遵循并让我知道是否有帮助。

awk '/{/||/}/{print;next} /MAG/{val=$0;getline;print val OFS $0}' OFS=" | "  Input_file

sed解决方案:

echo "MAG 121/002
Wed Mar 14 00:00:00 2018
MAG 121/003
Wed Mar 14 00:00:00 2018
MAG 121/004
Wed Mar 14 00:00:00 2018" | tr "\n" "|" | sed 's/|/ | /g' | sed -r 's/([^|]+\|[^|]+)\| /\1\n/g'
MAG 121/002 | Wed Mar 14 00:00:00 2018 
MAG 121/003 | Wed Mar 14 00:00:00 2018 
MAG 121/004 | Wed Mar 14 00:00:00 2018 

读取并回显:

echo "MAG 121/002
Wed Mar 14 00:00:00 2018
MAG 121/003
Wed Mar 14 00:00:00 2018
MAG 121/004
Wed Mar 14 00:00:00 2018" | while read line ; do case $line in MAG*) echo -n $line "| " ;; *) echo $line ;; esac ; done 
MAG 121/002 | Wed Mar 14 00:00:00 2018
MAG 121/003 | Wed Mar 14 00:00:00 2018
MAG 121/004 | Wed Mar 14 00:00:00 2018

代码格式:

while read line
do
  case $line in 
    MAG*) echo -n $line "| " ;; 
       *) echo $line ;; 
  esac
done 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM