Awk 如何在linux中删除2个或更多以字符开头和结尾的空格
我有很多文本文件,在一些行中,我的内容如下:Awk 如何在linux中删除2个或更多以字符开头和结尾的空格,awk,sed,replace,command-line,command,Awk,Sed,Replace,Command Line,Command,我有很多文本文件,在一些行中,我的内容如下: , + 304685593 2, , +$ $ $ 304685593$ 2, cat-A的结果如下所示: , + 304685593
, +
304685593
2,
, +$
$
$
304685593$
2,
cat-A的结果如下所示:
, +
304685593
2,
, +$
$
$
304685593$
2,
但我只想拥有以下内容:
, 304685593,
我使用了下面的命令,但它不起作用,如果有人能给我一个提示,真的很感激吗?
我想删除超过2个空格的字符,并删除超过2个空格后的第一个加号和最后一个字符
find . -name "*.txt" | xargs sed -i.bak -e 's/+ \{2,\}/ /g;s/\{2,\}1/ /g;s/\{2,\}2/ /g;s/\{2,\}3/ /g;'
使用
gnu awk
,您可以将其与自定义RS
一起使用:
awk-vrs='(^ | \n),[^,]+,(\n |$)'RT{
$0=RT
gsub(/[:space:]{2,}/,“”)
子(/\+/,“”)
}1'ORS=文件
使用
gnu awk
,您可以将其与自定义RS
一起使用:
awk-vrs='(^ | \n),[^,]+,(\n |$)'RT{
$0=RT
gsub(/[:space:]{2,}/,“”)
子(/\+/,“”)
}1'ORS=文件
EDIT:要在find
命令中运行此命令,请尝试以下操作(使用显示的示例编写和测试)。我强烈建议在测试目录中的第一个2 o3 3测试文件中测试此命令,然后您可以在实际文件上运行
首先创建script.awk
,如下所示(cat
下面的命令不是只显示script.awk
内容的代码):
然后运行以下find
命令对文件进行就地更新
find . -name "*.txt" -exec \
bash -c 'awk -f script.awk "$1" >"$1".tmp && mv "$1".tmp "$1"' _ {} \;
仅在单个文件上运行:请您尝试使用GNU
awk
中显示的示例编写并测试以下内容
awk-v RS=“^$”'
{
gsub(/\n+[:space:]+\n+\n+[:space:]+$/,“”)
gsub(/\n+[:space:]+\+[:space:]+/,OFS)
gsub(/[:空格:]+[0-9]+,/,“,”))
$1=$1
}
1'输入文件
编辑:要在find
命令中运行此命令,请尝试以下操作(使用显示的示例编写并测试)。我强烈建议在测试目录中的第一个2 o3 3测试文件中测试此命令,然后您可以在实际文件上运行
首先创建script.awk
,如下所示(cat
下面的命令不是只显示script.awk
内容的代码):
然后运行以下find
命令对文件进行就地更新
find . -name "*.txt" -exec \
bash -c 'awk -f script.awk "$1" >"$1".tmp && mv "$1".tmp "$1"' _ {} \;
仅在单个文件上运行:请您尝试使用GNU
awk
中显示的示例编写并测试以下内容
awk-v RS=“^$”'
{
gsub(/\n+[:space:]+\n+\n+[:space:]+$/,“”)
gsub(/\n+[:space:]+\+[:space:]+/,OFS)
gsub(/[:空格:]+[0-9]+,/,“,”))
$1=$1
}
1'输入文件
这可能适合您(GNU-sed):
将两个逗号之间的行集合起来,删除除第一组数字以外的所有内容,并用逗号将结果括起来
备选方案:
sed -zE 's/, \+\n[^,0-9]*([0-9]+)[^,]*,\n/,\1,/' file
这可能适用于您(GNU-sed):
将两个逗号之间的行集合起来,删除除第一组数字以外的所有内容,并用逗号将结果括起来
备选方案:
sed -zE 's/, \+\n[^,0-9]*([0-9]+)[^,]*,\n/,\1,/' file
试试sed-Ez的/(^ |\n),[^[:alnum:]*([0-9]+)[:space:]{2,}[0-9],($|\n)/\1、\2、\3/g'@WiktorStribiżew:这不起作用,没有发生任何变化。除了新行之外,是否可以考虑空格?在输入或输入中用多条线显示单行线?@ AUBHAVA:它是多行。但是,我想知道我们是否也可以考虑多个空间?你可以在代码< >代码> SED-EZ′s/(^ ^ \n)、[^::AlnUn:] +([0:9])[{0:9],[$:\n ] /\ 1,\ 2,\ 3 /g′< /c> > WikTrReTrBiBe>:这是不起作用的,没有发生任何变化。除了新行之外,是否可以考虑空格?在输入或输入中用多条线显示单行线?@ AUBHAVA:它是多行。但是我想知道我们是否也可以考虑多个空间?如果问题是基本的,你能显示<代码> CAT文件-<代码>吗?但是,我如何给出输入文件并将此命令应用于获取输出?您可以看到,此命令最终接受一个文件作为参数。如果我的问题是基本的,那么很抱歉。但是,我如何给出输入文件并将此命令应用于获取输出呢?您可以看到,此命令最终接受一个文件作为参数。