bash - 使用 awk 匹配特定的字母重复模式

标签 bash awk sed grep

假设我有:

ttb_5_x1
tgg_5_x2
ttb_5_x5
tcc_8_x8
ccr_5_x4

我尝试根据 t 过滤行开头的字母表。所以行开始于 tt应该保存在一个单独的文件中。以 t 开头的行也是如此

期望的输出应该是:
ttb_5_x1
ttb_5_x5


tgg_5_x2
tcc_8_x8

我试过 awk '/^t/{print}'awk '/^tt/{print}'但它对t的1或2次重复不敏感字母。

最佳答案

这可以通过更简单、更短的 awk 来完成。在单个 condition { action }堵塞:

awk 'match($0,/^t+/) {print > ("outfile" RLENGTH)}' file

然后检查输出:
cat outfile1
tgg_5_x2
tcc_8_x8

cat outfile2
ttb_5_x1
ttb_5_x5

关于bash - 使用 awk 匹配特定的字母重复模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61820719/

相关文章:

bash - 使用 awk 或 sed 命令循环从文件中打印大量特定行

awk:直接在awk脚本中设置环境变量

bash - 用awk在列中打印某些参数

python - 如何在 Python 中的 subprocess.Popen 中运行 awk -F\' ' {print $2}'?

bash - sed 查找匹配后的第一个空行并替换

bash - gawk 用于使用变量将包含模式的行替换为多行

string - 在 bash 中拆分字符串的最快方法

macos - 查找所有文件,并将它们复制到一个文件夹(递归展平)

linux - 如何使用 Bash 将字符串添加到文件中的每一行

linux sed 语法