如何使用 Bash 删除行首的换行符和字符?
How to delete newline and character at the start of line using Bash?
我需要删除行首有确切字符的换行符。
例如,我有 new.txt 文件,其中包含以下行:
"AAA"AAA
"BBB
"""BBB
"CCC"CCC
预期结果是:
"AAA"AAA
"BBB"BBB
"CCC"CCC
我尝试使用 sed
但它不起作用。
sed -i -e 's/\n"""/"/g' new.txt
请帮我解决这个问题。
使用 Perl。
perl -i -0777pe 's/\n"""/"/' new.txt
输出到new.txt
:
"AAA"AAA
"BBB"BBB
"CCC"CCC
用tr代替\r\n。使用 sed 命令,然后将 \r\n 替换回去。 \r 因为你的文件有 Windows 行结尾。
tr '\r' '\t' < new.txt | tr '\n' '\f' | sed -e 's/\t\f"""/"/' | tr '\f' '\n' | tr '\t' '\r'
这可能对你有用 (GNU sed):
sed 'N;s/\n"""/"/;P;D' file
将下一行追加到当前行。如果模式 space 现在包含 \n"""
将其替换为 "
然后 print/delete 模式 space 中的第一行并重复。
使用 GNU sed:
$ cat new.txt
"AAA"AAA
"BBB
"""BBB
"CCC"CCC
$ sed ':x;N;s/\n""//;bx' new.txt
"AAA"AAA
"BBB"BBB
"CCC"CCC
GNU - sed manual - joining lines
T.
我需要删除行首有确切字符的换行符。
例如,我有 new.txt 文件,其中包含以下行:
"AAA"AAA
"BBB
"""BBB
"CCC"CCC
预期结果是:
"AAA"AAA
"BBB"BBB
"CCC"CCC
我尝试使用 sed
但它不起作用。
sed -i -e 's/\n"""/"/g' new.txt
请帮我解决这个问题。
使用 Perl。
perl -i -0777pe 's/\n"""/"/' new.txt
输出到new.txt
:
"AAA"AAA "BBB"BBB "CCC"CCC
用tr代替\r\n。使用 sed 命令,然后将 \r\n 替换回去。 \r 因为你的文件有 Windows 行结尾。
tr '\r' '\t' < new.txt | tr '\n' '\f' | sed -e 's/\t\f"""/"/' | tr '\f' '\n' | tr '\t' '\r'
这可能对你有用 (GNU sed):
sed 'N;s/\n"""/"/;P;D' file
将下一行追加到当前行。如果模式 space 现在包含 \n"""
将其替换为 "
然后 print/delete 模式 space 中的第一行并重复。
使用 GNU sed:
$ cat new.txt
"AAA"AAA
"BBB
"""BBB
"CCC"CCC
$ sed ':x;N;s/\n""//;bx' new.txt
"AAA"AAA
"BBB"BBB
"CCC"CCC
GNU - sed manual - joining lines
T.