extra help with awk
書いているのは 8/13 だけど、なんとなく気分は日曜日。(笑)
シンプルで面白そうな話題です。
text here / text there
を
- Text here - Text there.
としたいらしい。
awk -F" */ *" ' { if (NF > 1) fmt = "- %s\n" else fmt = "%s\n" for ( i = 1; i <= NF; ++i) printf fmt, $i } NF == 0 ' input.txt > output.txt
ではなく、
BEGIN { FS = " */ *" } # Set field-separator. NF > 1 { print "- " $1 if ( $2 ) print "- " $2 else prefix = "- " next } { print prefix $0; prefix = "" }
ですね。
最終的には、
# Set field-separator. # Make it eat up characters whose ASCII codes are 1--32 # (octal 1--40). BEGIN { FS = "[\1-\40]*/[\1-\40]*" } { sub( /[ \t\r]+$/, "" ) } { sub( /[ \t\r]+$/, "" ) } NF > 1 { print "- " $1 if ( $2 ) print "- " $2 else prefix = "- " next } { print prefix $0; prefix = "" }
となった。