![](https://www.alaica.com/wp-content/uploads/linux-76.png)
我有一个文件如下:
This is a test.
One bang two three
Foo dang Bar
001 0xfg 0xA
002 0xA foo bar 0xfG
I'm done
教程详情 | |
---|---|
难度级别 | 中间的 |
根权限 | 不 |
要求 | sed 和 bash/ksh |
美东时间。阅读时间 | 1分钟 |
如何从上述文件中删除每行以特定字母(例如“g”)结尾的所有“单词”?输出应如下所示:
如何在 Linux / Unix 等操作系统下使用 sed 或 awk 删除基于正则表达式的单词?
This is a test.
One two three
Foo Bar
001 0xA
002 0xA foo bar
I'm done
您可以使用任何标准的 Unix 文本编辑和处理实用程序来查找和替换/删除文件中的单词。
Sed 示例
语法是:
sed 's/<word>//g'输入 sed -e 's/<word 正则表达式>//g'输入>输出
在此示例中,从输入中删除 foo 单词:
echo '这是一个 foo 测试' | sed -e 's/<foo>//g'
要删除每行中所有以字母“g”结尾的单词,请输入:
sed -e 's/<[a-zA-Z0-9]*[g|G]>//g'输入
awk 示例
语法是:
awk '{gsub("word", "");print}'输入 awk '{gsub("regex", "");print}'输入>输出
在此示例中,从输入中删除条形词:
awk '{gsub("bar", "");print}' <<< "这是一个 bar 测试"
要使用 gnu/awk 删除每行中以字母“g”结尾的所有单词,请输入:
awk '{gsub("[a-zA-Z0-9]*[g|G]$", "");print}'输入
或者
awk '{gsub("\<[a-zA-Z0-9]*[g|G]\>", "");print}'输入