输入
$ cat input.txt
345 "cuad" "dfr"
23 "test3" "dfec2
"v1"
33 v2
v3"
32 "key3" "fer"
12 "rte" "ef"
目标,仅当下一行不是以数字和制表符开头时,我才想用空格替换换行符
345 "cuad" "dfr"
23 "test3" "dfec2 "v1" 33 v2 v3"
32 "key3" "fer"
12 "rte" "ef"
试试这个 bash command to remove new lines if condition on the next line is met 但我不能适应我的需要
尝试了,还是不行
$ perl -0777 -pe 's/\n(?=[^0-9]+\t)/ /g' input.txt
最佳答案
你可以使用这个带有否定前瞻的 perl
命令:
perl -0777 -pe 's/\R(?!\d+\t|\Z)/ /g' file
345 "cuad" "dfr"
23 "test3" "dfec2 "v1" 33 v2 v3"
32 "key3" "fer"
12 "rte" "ef"
正则表达式详细信息:
\R
:匹配任何换行符(符合unicode)(?!\d+\t|\Z)
:否定前瞻断言我们没有 1+ 数字后跟制表符或输入结束https://stackoverflow.com/questions/73152164/