删除控制返回并合并一个文本文件中的行并限制字符数

删除控制返回并合并一个文本文件中的行并限制字符数

我想删除控制返回并合并一个文本文件中的行并限制字符数

输入.txt包含:

comment 1
comment 2 
...
comment n 

输出.txt应该有一个字符串:

comment 1 comment 2 ... commnet n

输出.txt应限制为 32 个字符:

comment 1 comment 2 comment 3 co

我可以使用 sed、awk tr 或其他东西吗?

答案1

head -c 32 input.txt | tr '\n' ' ' > output.txt
  • head -c 32丢弃除前 32 个字节之外的所有字节。

  • tr '\n' ' '用空格字符替换所有换行符。

如果你想限制人物代替字节如果是多字节字符编码,你可以使用grep

tr '\n' ' ' < input.txt | grep -oEe '^.{,32}' > output.txt

答案2

awk 就可以了。一种方法是:

$ echo -n "comment 1\rcomment 2\r...\rcomment n\r" > input.txt
$ cat input.txt | awk -v FS="" -v RS="" '{for (i=1;i<=32;i++) printf ($i == "\r")? "" : $i}' > output.txt
$ cat output.txt 
comment 1comment 2...comment 

解释:默认情况下,awk 逐行处理输入,每行调用记录;每行逐列处理,单列称为场地。 每一个场地由以 1 开头的变量引用,例如 $1、$2、$3…

因此,你可以通过设置来更改默认行为F领域年代分隔符为"",导致 awk 逐个字符地处理内容。然后你设置R记录年代分隔符,""以便您可以一次引用所有文本的字符(即无需编写代码来逐行处理内容)

最后,您可以轻松地对字符进行操作,因此您可以循环遍历字段(即字符),并且仅当字符不是回车符时才打印。

答案3

tr '\n' ' ' < in.txt | cut -c -32
  • tr '\n' ' ':从输入文本中删除新行
  • cut -c -32:限制输出为 32 个字符

相关内容