问题标签 [unix-text-processing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
for-loop - AWK:使用类似于 FNR==NR 方法的方法连接和处理三个或更多文件
因为我在学习awk
;我发现FNR==NR
方法是处理两个文件的一种非常常见的方法。如果FNR==NR
;然后是first file
,当从连接文件中读取每一行时FNR
重置为,这意味着它显然是.1
!(FNR==NR)
second file
当涉及三个或更多文件时,我看不到第二个和第三个文件的方式,因为它们的!(FNR==NR)
条件相同。这让我试图弄清楚怎么会有类似FNR2
and的东西FNR3
?
所以我实现了一个方法来处理三个文件awk
。假设FNR1
FNR2
FNR3
每个文件都有。对于我制作for loop
的每个单独运行的文件。每个循环的条件都是相同的NR==FNR#
,实际上得到了我的预期:
所以我想知道是否有更清醒、更简洁的方法awk
可以用下面的代码提供类似的结果
示例文件内容
AWK for 循环
当前和所需的输出
你可以看到NR
对齐FNR#
并且它是可读的 which NR
is for which file#
。
另一种方法
我在FNR==1{++f} f==1 {}
这里找到了这个方法使用 awk 处理 3 个文件
arr1[1]
但是每次读取新行时,此方法正在替换
失败尝试 1
for 循环成功(arr1[1]
未更改)
awk - awk 数组已创建,但缺少元素
我有这个示例文件
我想创建一个数组,其中年份值是每个具有给定条件$2
的唯一用户 ID 对的元素。例如和$1$4
$3=="stop"
arr[userXid1]=2010
arr[userTid1]=2014
我的代码:
预期输出:
但这会打印空行。当我print length(arr)
给出的时候3
,这是有道理的。但$2
价值观不存在,我不知道为什么。任何帮助表示赞赏。
补充:最终代码,与问题无关。
unix-text-processing - Bash 修剪一些文本
我有一个看起来像这样的输出
我怎样才能只grep最后的数字?
谢谢
awk - gsub:删除直到第一次出现而不是一行中给定字符的最后一次出现
我有一个 html 文件,我基本上尝试删除第一次出现的<...>
with sub
/gsub
功能。
我使用 awk 正则表达式.
*
+
来匹配<
>
. 然而,第一次出现>
的被转义(?)。我不知道是否有解决方法。
示例输入 file.txt
(x
添加不打印空):
代码:
电流输出:
所需的输出:
bash - 通过定义标题的正则表达式拆分 Markdown 文本文件
我正在尝试使用命令行程序将较大的文本文件拆分为块:
- 拆分定义的正则表达式模式
- 由该正则表达式模式中的捕获组定义的文件名
文本文件的格式为:
输出应该是具有以下文件名和内容的这两个文件:
2020-01-01.md ↓</p>
2020-01-02.md ↓</p>
我似乎无法正确掌握所有标准。
要拆分的正则表达式模式(分隔符)很简单,类似于^# (2020-.*)$
要么我无法设置一个多行正则表达式模式,它会越过\n
换行符并在下一次出现分隔符模式时停止。
或者我可以在正则表达式模式上拆分csplit
,但我不能用捕获的内容命名文件(2020-.*)
awk split()
or也一样match()
,不能让它完全工作。
我正在寻找一个通用的解决方案,参数是定义块开始(例如# 2020-01-01
)和结束(例如下一个日期标题# 2020-01-02
或EOF
)的正则表达式模式
shell - 如何在文本文件中每隔 2 行插入一个新行?
从此开始,
例子.txt
走到这一步,
附加文本.txt
unix-text-processing - 如何检查一个文件中的字段是否不包含 UNIX 中另一个文件中的值列表
我有两个文件,一个具有该列的交易价值的数据。假设货币代码和另一个文件具有有效/预期的货币代码。
文件1:
ID|col1|curr_cd
1|abc|印度卢比
2|定义|美元
3|xyz|3AB
4|tuv|ABC
……
文件2
curr_cd
印度卢比
美元
加元
……
我需要那些无效的值列表,这意味着存在于 File1 中但不存在于 File2 中。File1 可能包含数百万个事务,因此我需要一个 AWK 或一个可以更快地为我提供结果的命令。
任何人都可以在这里帮助我。
bash - 如何对 Endnote Export File 格式的字段进行排序,其中 Line 在地址中包含 GRAZ 作为第一行?
我有一个 Endote 导出文件,如下所示:
以%+开头的字段包含作者地址,根据作者的作者地址(1 到 n 的关系),它可以包含更多行。每个作者地址由换行符(换行符)分隔
现在我想问一下如何按 GRAZ 所在的行对该字段进行排序。Graz 所在的这一行,它们应该是列表中的第一行。
有没有办法通过 bash 文本处理工具来做到这一点,或者需要我编写一个 Delphi 的程序来访问和导入尾注导出转储。
上面这个例子的输出应该是
我会很高兴并感谢任何有趣的建议。
regex - 如何使用正则表达式和 sed 提取分支名称?
如何使用 bash 从字符串中提取分支名称?例如,我有以下命令:
branch=$(git branch -a --contains $sha)
这可能会返回:
* branch-1.0
(前缀始终是星号)branch-2.0 remotes/origin/branch-2.0
(这里可能是换行而不是空格)master remotes/origin/master
(这里可能是换行而不是空格)
而且我只需要分支名称(并且只需要一次)master
-branch-2.0
或branch-1.0
. 我知道它可以用sed
命令来完成,但我不知道怎么做。
我使用以下正则表达式:(branch-[0-9].[0-9])|(master)
bash - 在 awk 中处理具有多个分隔符的文本
我有一个看起来像的文字 -
我想要count:1
列中的数字,所以1
我希望将这些数字存储在一个数组中。
这似乎非常重复且效率不高,有什么想法可以简化吗?