awk中的字符串比较

Dag*_*ang 25 string syntax awk

我需要按字母顺序比较两个字符串,而不仅仅是相等测试.我想知道有没有办法在awk中进行字符串比较?

pax*_*blo 28

当然可以:

pax$ echo 'hello
goodbye' | gawk '{if ($0 == "hello") {print "HELLO"}}'
HELLO
Run Code Online (Sandbox Code Playgroud)

您也可以进行不等式(有序)测试:

pax> printf 'aaa\naab\naac\naad\n' | gawk '{if ($1 < "aac"){print}}'
aaa
aab
Run Code Online (Sandbox Code Playgroud)


Ily*_*kov 6

你可以使用标准的布尔运算符在awk中进行字符串比较,这与你必须使用strcmp()的C不同.

echo "xxx yyy" > test.txt

cat test.txt | awk '$1!=$2 { print($1 $2); }'

  • 不要在这里使用猫,awk完全有能力自己阅读文件.无用的猫奖让人想起...... http://partmaps.org/era/unix/award.html (7认同)
  • "无用的猫奖"非常适合你的工具箱:-) (7认同)