クエリには次の表がありますが、+
区切り文字は、次の例に示すように、「説明」の下に新しい行を作成することです。
TYPE+DESCRIPTION+PRIORITY+DATE
1+text1+HIGH+Aug 15
+text2
2+text+LOW+Aug 11
3+text+LOW+Aug 11
4+text1+HIGH+Aug 15
+text2
+text3
sedを使用して次のように見えるようにするにはどうすればよいですか?
TYPE DESCRIPTION PRIORITY DATE
1 text1 text2 HIGH Aug 15
2 text LOW Aug 11
3 text LOW Aug 11
4 text text2 text3 HIGH Aug 15
私は試した:
sed -n '1{h;n};/^ *+ */{s// /;H;n};{x;s/\n//g;p};${x;p}'
しかし、エラーが発生しました(sed:コマンドが壊れています)。ありがとうございます。
ベストアンサー1
awk '
BEGIN{OFS=FS="+"}
{sub(/[[:blank:]]+$/,"")} #Removes trailing blanks
NF==4{print line;line=$0}
NF==2{x=$2;$0=line;$2=$2" "x;line=$0}
END{print line}
' file | column -ts "+"
その背後にある主なアイデアは、ifが前の行のNF==2
2番目のフィールド$2
に2番目のフィールドを置くことです。それで何が起こりますか?
1+text1+HIGH+Aug 15 #Puts this in "line" variable
+text2 #Transfer 2nd field to "line" second field
# Resulting in...
1+text1 text2+High+Aug 15
column
+
この微細な最終出力を生成するために出力から削除されました。
TYPE DESCRIPTION PRIORITY DATE
1 text1 text2 HIGH Aug 15
2 text LOW Aug 11
3 text LOW Aug 11
4 text1 text2 text3 HIGH Aug 15