【awk】使用awk和sed操作文本
2025-01-02 本文已影响0人
Bogon
以英文逗号 , 分割,如何用 awk实现以英文逗号分割,如果第4列值为空则不输出这行,如果不为空就输出该行?
可以使用 awk
来处理 txt文件,根据第四列是否为空来筛选行。
下面是一个用 awk
实现的命令,它会检查第四列,如果不为空就输出该行。
awk -F',' '$4 != ""' file.txt
解释:
-
-F','
:指定字段分隔符为英文逗号,
。 -
$4 != ""
:检查第四列的值是否为空。如果第四列不为空(即不等于空字符串),则输出该行。
file.txt 文本内容如下:
66facdcee4b0faa9da039e39
67061585e4b0f53e913f188f
如何用 sed 或者 awk 实现 输出文本为:
ABC@66facdcee4b0faa9da039e39
ABC@67061585e4b0f53e913f188f
你可以使用 sed
或 awk
来实现你想要的输出格式。具体方法如下:
使用 sed
:
sed 's/^/ABC@/' file.txt
解释:
-
s/^/ABC@/
:这是一个sed
替换命令,表示在每行的开头(^
)加上ABC@
。 -
file.txt
是输入文件。
使用 awk
:
awk '{print "ABC@" $1}' file.txt
解释:
-
{print "ABC@" $1}
:$1
表示每行的第一个字段(也就是整行的内容),在前面加上ABC@
。 -
file.txt
是输入文件。
示例输出:
ABC@66facdcee4b0faa9da039e39
ABC@67061585e4b0f53e913f188f
这两种方法都可以实现你想要的结果。根据你的需求,选择使用 sed
或 awk
都可以。
file.txt 文本内容如下:
ABC@66facdcee4b0faa9da039e39
ABC@67061585e4b0f53e913f188f
如何给每行行首和行尾 加上 英文 " 符号?
你可以使用 sed
或 awk
来给每行的行首和行尾加上英文双引号 "
。
使用 sed
:
sed 's/^/"/;s/$/"/' file.txt
解释:
-
s/^/"/
:在每行的开头添加双引号"
. -
s/$/"/
:在每行的结尾添加双引号"
. -
file.txt
是输入文件。
使用 awk
:
awk '{print "\"" $0 "\""}' file.txt
解释:
-
print "\"" $0 "\""
:$0
是整个行的内容,\"
用来输出一个双引号,因此在行的首尾加上双引号。
示例输出:
"ABC@66facdcee4b0faa9da039e39"
"ABC@67061585e4b0f53e913f188f"
file.txt中有多行文本,每行内容以英文逗号 , 分隔,如何实现第4列和第5列相同,则输出该行?
你可以使用 awk
来处理这个问题,检查第4列和第5列的值是否相同,如果相同则输出该行。
假设你有一个名为 file.txt
的文件,格式如下(每行内容以英文逗号 ,
分隔):
使用 awk
:
awk -F',' '$4 == $5' file.txt
解释:
-
-F','
:设置字段分隔符为英文逗号,
。 -
$4 == $5
:检查第4列和第5列的内容是否相同。 - 如果相同,则输出该行。
示例:
假设 file.txt
的内容如下:
apple,banana,orange,123,123
cat,dog,mouse,456,789
red,blue,green,789,789
那么执行上述 awk
命令后,输出将会是:
apple,banana,orange,123,123
red,blue,green,789,789
这两行符合条件:第4列和第5列的值相同。