Bash awk:将第一行转换为第一列,将第二行转换为第二列
我有一个包含如下数据的文件:Bash awk:将第一行转换为第一列,将第二行转换为第二列,bash,shell,awk,Bash,Shell,Awk,我有一个包含如下数据的文件: { 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 <fi
{
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}'
cat | awk'{printf“%s”(NR%2==0?RS:FS),$1}'
请尝试以下内容,并告诉我这是否有帮助
awk '/{/||/}/{print;next} /MAG/{val=$0;getline;print val OFS $0}' OFS=" | " Input_file
请您尝试以下内容,并让我知道这是否有帮助
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
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
阅读并回应:
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
你为自己做了什么?伊尼安的评论和我的答案有几秒钟的差异,所以我留下来回答伊尼安的问题,然后我将撤销我对帖子的删除。我尝试的是:cat | awk'{printf“%s”(NR%2==0?RS:FS),$1}MAG 121/002 Sun MAG 121/003与sed:
sed'/MAG/{N;s/\N/}'文件
你为自己做了什么?伊尼安的评论和我的回答有几秒钟的差异,所以我留下来回答伊尼安的问题,然后我将撤销我对帖子的删除。我尝试的是:cat | awk'{printf“%s”(NR%2==0?RS:FS),$1}'MAG 121/002 Sun MAG 121/003与sed:sed'/MAG/{N;s/\N/}'文件
@Kannan,请现在试试,让我知道这是否对你有帮助?@Kannan,请现在试试,让我知道这是否对你有帮助?最好不要在不需要的地方提交多个答案。这个答案应该与你的另一个答案相结合,在大致相似的背景下强调每一个答案都是一个可供选择的解决方案。为什么?他们彼此独立。你可以投这个反对票,那个反对票,两个反对票,两个反对票,或者两个反对票,或者两个都反对票,或者两个都不反对票。最好不要在不需要的地方提交多个答案。这个答案应该与你的另一个答案相结合,在大致相似的背景下强调每一个答案都是一个可供选择的解决方案。为什么?他们彼此独立。你可以投这个反对票,投那个反对票,投两个反对票,投两个反对票,也可以投两个反对票,或者两者都投,或者两者都投,或者两者都投。