要查找“;”,请删除空格直到下一个字符
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了要查找“;”,请删除空格直到下一个字符相关的知识,希望对你有一定的参考价值。
我有很多行以“;”开头,然后是1个或多个空格,后面是同一行上的其他一些字符。我需要删除“;”后面的空格最多但不包括随后的字符。
我尝试了以下代码的一些变体,因为它在具有空格的行上运行良好,但我对awk不是很熟悉。
awk 'gsub(/^ +| +$/,"")1' filea>fileb
样本输入:
; 4
; group 452
; ring
需要输出:
;4
;group 452
;ring
答案
要在第一个分号后删除任何空格,请尝试:
$ awk 'sub(/^;[[:blank:]]+/, ";") 1' filea
;4
;group 452
;ring
正则表达式^;[[:blank:]]+
匹配第一个分号和跟随它的任何空格或制表符。函数sub
用;
替换它。因为这只在线上(开头)发生一次,所以不需要gsub
。
[:blank:]
是一种指定空格的unicode安全方法。
另一答案
awk 'sub(/^; +/,";")1' file
;4
;group 452
;ring
另一答案
sed
也会这样做:
sed -E 's/^(;)1([[:blank:]]+)/\1/' file
括号用作选择器,\number
组合表示相应的选择。
在^(;)1([[:blank:]]+)
中,我们检查线的起点(^
)和一次出现的;
(1
),然后是任意数量的空白字符([[:blank:]]+)
,然后用我们的第一个选择替换匹配的模式。
另一答案
这将字段分隔符FS
定义为记录的开头,后跟;
和一组空格。然后它重新定义输出字段分隔符OFS
只是一个;
。从FS
到OFS
的转换是通过将$1
重新分配给自己来完成的。
awk 'BEGINFS="^; *";OFS=";"$1=$11'
要么
awk -F'^; *' -vOFS=";" '$1=$11'
以上是关于要查找“;”,请删除空格直到下一个字符的主要内容,如果未能解决你的问题,请参考以下文章
编写程序,输入字符串(包含空格),统计其中单词的个数,单词之间以一个或多个空格分隔。
C 语言文件操作 ( 配置文件读写 | 读取配置文件 | 函数接口形参 | 读取配置文件的逐行遍历操作 | 读取一行文本 | 查找字符 | 删除字符串前后空格 )