要打印第2行并将其放在第1行的第3和第4个反斜杠之间
第1行和第2行是
http://example.com//
test
所需的输出
http://example.com/test/
测试可以是任何单词 所以不能用词来做
我已经尝试过这个awk线,但是它将它放到了第1行的末尾 不是我想要的地方
awk 'NR%2{printf "%s ",$0;next;}1' file1 > file2
答案 0 :(得分:1)
这是一个(对于lulz,大多数)与gawk和mawk一起工作,但是失败了,例如original-awk:
$ awk '{printf (sub(/\/$/,"")?$0:"") (getline?$0:"") "/" ORS; exit}' file
另一个,如果NR==2
上的记录有&
,但是滥用了这个功能,则会失败:
$ awk '{p=$0;sub(/.$/,(getline?$0 "&":""),p);print p;exit}' file
答案 1 :(得分:1)
这个怎么样:
$ awk -F/ -v OFS=/ 'NR == 1 { line = $0; next }
{ s = $0; $0 = line; $(NF - 1) = s; print }' file
保存第一行并跳到下一行。保存第二行,将$0
重置为第一行,将第二行的内容插入倒数第二个字段并打印。
答案 2 :(得分:1)
$ awk 'NR==1{sub(/\/$/,""); s=$0; next} {print s $0 "/"}' file
http://example.com/test/
答案 3 :(得分:0)
试试这个awk单行:
kent$ cat f
http://example.com//
test
kent$ awk -v RS="\0" '{sub("/$",$2"/",$1)}$0=$1' f
http://example.com/test/
答案 4 :(得分:0)
短GNU sed 替代方案:
sed '1{N; s~/*\n\(.*\)~/\1/~;}' file
http://example.com/test/